home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr35 / wfs300.zip / WFSUGREF.DOC < prev    next >
Text File  |  1993-06-19  |  107KB  |  4,225 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.             Waffle File Server (WFS)
  17.  
  18.            A Mail Based Archive Server
  19.  
  20.               for MS-DOS Waffle BBS
  21.  
  22.  
  23.  
  24.             User Guide and Reference
  25.  
  26.                Release 3.0
  27.  
  28.  
  29.  
  30.  
  31.               18 June 1993
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.                 Lawrence T. Hardiman
  44.  
  45.                 The Birdsong Company
  46.                 PO Box 2031
  47.                 Sunnyvale CA, 94087-2031
  48.  
  49.  
  50.                 larry@Birdsong.Suvl.CA.US
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73. Abstract:
  74.  
  75. Waffle File Server (WFS) is "Add-On" software for the MS-DOS
  76. version of Waffle BBS. WFS extends Waffle's capability by
  77. providing a Mail Based Archive Server (MBAS), an Automatic
  78. Mailing Server (AutoMail), a Remote Command Execution Facility,
  79. and a Mailing List Server.
  80.  
  81. This document provides a Waffle SysOp with information on how to
  82. install, customize and operate WFS.
  83.  
  84. WFS is ShareWare.
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123. _________________________________________________________________
  124.  Copyright 1993, The Birdsong Company, Sunnyvale California USA
  125.  
  126.                ALL RIGHTS RESERVED
  127.  
  128.  
  129.  
  130.                  - ii -
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.                  Preface
  143.  
  144.  
  145. ShareWare
  146.  
  147. Waffle File Server (WFS) is SHAREWARE. WFS is not FreeWare. WFS
  148. is not in the public domain.
  149.  
  150. You may install and try WFS for up to 30 days. If you intend to
  151. use WFS beyond the trial period, you must license it.
  152.  
  153. The License for individuals is $20.00 US where payment is made by
  154. check in US Dollars drawn on a US branch of a US bank.
  155.  
  156. The License for individuals outside the United States is $25.00
  157. US. You may pay by check drawn on your local bank, in your local
  158. currency. The extra $5.00 is what my bank charges me to process
  159. your check.
  160.  
  161. Commercial Enterprise, Government Agencies, Educational
  162. Institutions, and Not-for-Profits may try WFS for up to 30 days.
  163. Beyond the trial period, you must be licensed to use it. To get a
  164. quote for your use, send a Request for Price Quotation (RFP) on
  165. your company's or organization's letterhead.
  166.  
  167. The Birdsong Company will respond with a price quotation.
  168. Enterprise Licenses are available. Ask! I'm generally reasonable
  169. on terms.
  170.  
  171. The file LICENSE.FRM (a License Form), included in the WFS
  172. distribution, is the standard license agreement.
  173.  
  174. To register WFS, print the file LICENSE.FRM, included in this
  175. distribution, fill in the blanks, sign it, and mail it with your
  176. registration fee to The Birdsong Company at the address shown on
  177. the form.
  178.  
  179. The WFS executable programs issue a modest "NagWare" message at
  180. program startup, then pause for 5 seconds before continuing.
  181. Registered users will recieve copies of the executable programs
  182. that do not exhibit this behavior.
  183.  
  184.  
  185. Disclaimer of Warrantee
  186.  
  187. The Birdsong Company provides WFS "As Is" and disclaims all
  188. warranties relating to the WFS software, express or implied,
  189. including without limitation any implied warranties of
  190. merchantability or fitness for a particular purpose. The Birdsong
  191. Company will not be liable for any special, incidental,
  192. consequential, indirect or similar damages due to loss of data or
  193.  
  194.  
  195.  
  196.                  - iii -
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205. any other reason, even if The Birdsong Company has been advised
  206. of the possibility of such damages.  In no event shall The
  207. Birdsong Company's liability for any damages ever exceed the
  208. price paid for the license to use the software.
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.                  - iv -
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.               Contents
  278.  
  279.  
  280.  
  281.      Chapter 1    What's New in This Release           7
  282.  
  283.      Chapter 2    Introduction                   8
  284.     2.1  Overview  . . . . . . . . . . . . . . . . . . 8
  285.     2.2  Mail Based Archive Server . . . . . . . . . . 9
  286.     2.3  Automatic Mailing Facility  . . . . . . . .  10
  287.     2.4  Remote Command Execution Facility . . . . .  10
  288.     2.5  Mailing List Server . . . . . . . . . . . .  10
  289.     2.6  Supported Environment . . . . . . . . . . .  11
  290.  
  291.      Chapter 3    Message Command Language          12
  292.     3.1  The HELP Command  . . . . . . . . . . . . .  13
  293.     3.2  The DIR Command . . . . . . . . . . . . . .  13
  294.     3.3  The NEWFILES Command  . . . . . . . . . . .  13
  295.     3.4  The GET Command . . . . . . . . . . . . . .  14
  296.     3.5  The REPLYTO Command . . . . . . . . . . . .  15
  297.     3.6  The PING Command  . . . . . . . . . . . . .  15
  298.     3.7  The COOKIE Command  . . . . . . . . . . . .  15
  299.     3.8  The QUIT Command  . . . . . . . . . . . . .  15
  300.     3.9  The PASSWORD Command  . . . . . . . . . . .  16
  301.     3.10  The JOIN Command . . . . . . . . . . . . .  16
  302.     3.11  The UNJOIN Command . . . . . . . . . . . .  17
  303.     3.12  The ARCHIVE Command  . . . . . . . . . . .  17
  304.     3.13  The MEMBERS Command  . . . . . . . . . . .  17
  305.     3.14  The ADDMEMBER Command  . . . . . . . . . .  18
  306.     3.15  The DROPMEMBER Command . . . . . . . . . .  18
  307.     3.16  The DIGEST Command . . . . . . . . . . . .  19
  308.     3.17  SysOp Defined Commands . . . . . . . . . .  19
  309.  
  310.      Chapter 4    Installing WFS                  20
  311.     4.1  Planning your Configuration . . . . . . . .  20
  312.        4.1.1  Incoming User IDs  . . . . . . . . . .  21
  313.        4.1.2  Outbound User ID . . . . . . . . . . .  21
  314.        4.1.3  Disk Space . . . . . . . . . . . . . .  21
  315.     4.2  The MS-DOS Environment  . . . . . . . . . .  22
  316.     4.3  Installing the Programs . . . . . . . . . .  23
  317.        4.3.1  Configuring WFSREQST . . . . . . . . .  23
  318.        4.3.2  Configuring WFSSENDF . . . . . . . . .  23
  319.           4.3.2.1  Command Line Arguments  . . . . .  24
  320.        4.3.3  Configuring an Authorization Exit
  321.           Program  . . . . . . . . . . . . . . .  25
  322.  
  323.  
  324.  
  325.                    iv
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.     4.4  Updating Waffle's STATIC File . . . . . . .  25
  341.     4.5  Other WFS Files . . . . . . . . . . . . . .  26
  342.  
  343.      Chapter 5    Configuring WFS Features          27
  344.     5.1  Configuring the Mail Based Archive Server .  27
  345.     5.2  Waffle's DIRS file  . . . . . . . . . . . .  27
  346.        5.2.1  /WFS.DENY  . . . . . . . . . . . . . .  27
  347.        5.2.2  /WFS.HIDE  . . . . . . . . . . . . . .  28
  348.        5.2.3  Configuring WFSFILES . . . . . . . . .  28
  349.     5.3  Automatic Mailing Facility  . . . . . . . .  29
  350.     5.4  Remote Command Execution Facility . . . . .  29
  351.        5.4.1  The Command Definition File  . . . . .  29
  352.           5.4.1.1  FileIdent . . . . . . . . . . . .  30
  353.           5.4.1.2  Command . . . . . . . . . . . . .  31
  354.           5.4.1.3  Password  . . . . . . . . . . . .  31
  355.           5.4.1.4  UserOperands  . . . . . . . . . .  32
  356.           5.4.1.5  MailResults . . . . . . . . . . .  32
  357.           5.4.1.6  RecordResults . . . . . . . . . .  32
  358.     5.5  Mailing Lists . . . . . . . . . . . . . . .  33
  359.        5.5.1  About Mailing Lists  . . . . . . . . .  33
  360.           5.5.1.1  Open Mailing Lists  . . . . . . .  33
  361.           5.5.1.2  One Way Mailing Lists . . . . . .  33
  362.           5.5.1.3  Digest Mailing Lists  . . . . . .  34
  363.        5.5.2  Configuring Mailing Lists  . . . . . .  36
  364.        5.5.3  The Mailing List Configuration File  .  37
  365.           5.5.3.1  FileIdent . . . . . . . . . . . .  37
  366.           5.5.3.2  ListName  . . . . . . . . . . . .  37
  367.           5.5.3.3  Welcome . . . . . . . . . . . . .  37
  368.           5.5.3.4  MemberFile  . . . . . . . . . . .  38
  369.           5.5.3.5  ReplyTo . . . . . . . . . . . . .  38
  370.           5.5.3.6  ReplyStyle  . . . . . . . . . . .  39
  371.           5.5.3.7  MultiAddress  . . . . . . . . . .  40
  372.           5.5.3.8  MembersOnly . . . . . . . . . . .  40
  373.           5.5.3.9  NoEcho  . . . . . . . . . . . . .  41
  374.           5.5.3.10    AutoDelete . . . . . . . . . . .  41
  375.           5.5.3.11    Password . . . . . . . . . . . .  41
  376.           5.5.3.12    Digest . . . . . . . . . . . . .  42
  377.           5.5.3.13    DigestMinArticles  . . . . . . .  42
  378.           5.5.3.14    DigestSize . . . . . . . . . . .  43
  379.           5.5.3.15    Join . . . . . . . . . . . . . .  43
  380.           5.5.3.16    UnJoin . . . . . . . . . . . . .  43
  381.           5.5.3.17    Archive  . . . . . . . . . . . .  44
  382.           5.5.3.18    Members  . . . . . . . . . . . .  44
  383.           5.5.3.19    AddMember  . . . . . . . . . . .  44
  384.           5.5.3.20    DropMember . . . . . . . . . . .  44
  385.  
  386.      Chapter 6    Reference                  46
  387.     6.1  Waffle's Static File  . . . . . . . . . . .  46
  388.  
  389.  
  390.  
  391.                 v
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.        6.1.1  Temporary  . . . . . . . . . . . . . .  47
  407.        6.1.2  Bin  . . . . . . . . . . . . . . . . .  47
  408.        6.1.3  Waffle . . . . . . . . . . . . . . . .  47
  409.        6.1.4  Node . . . . . . . . . . . . . . . . .  47
  410.        6.1.5  Uucpname . . . . . . . . . . . . . . .  47
  411.        6.1.6  wfs.sender . . . . . . . . . . . . . .  47
  412.        6.1.7  wfs.reply-to . . . . . . . . . . . . .  48
  413.        6.1.8  wfs.uuencode . . . . . . . . . . . . .  48
  414.        6.1.9  wfs.uuencode.ext . . . . . . . . . . .  48
  415.        6.1.10  wfs.ascii.size  . . . . . . . . . . .  49
  416.        6.1.11  wfs.ascii.lines . . . . . . . . . . .  49
  417.        6.1.12  wfs.uuencode.lines  . . . . . . . . .  49
  418.        6.1.13  wfs.help  . . . . . . . . . . . . . .  50
  419.        6.1.14  wfs.filelist  . . . . . . . . . . . .  50
  420.        6.1.15  wfs.transcript  . . . . . . . . . . .  50
  421.        6.1.16  wfs.notrans . . . . . . . . . . . . .  50
  422.        6.1.17  wfs.signature . . . . . . . . . . . .  50
  423.        6.1.18  wfs.errorlimit  . . . . . . . . . . .  51
  424.        6.1.19  wfs.msglimit  . . . . . . . . . . . .  51
  425.        6.1.20  wfs.daylimit  . . . . . . . . . . . .  51
  426.        6.1.21  wfs.quelimit  . . . . . . . . . . . .  52
  427.        6.1.22  wfs.enable.*  . . . . . . . . . . . .  52
  428.        6.1.23  wfs.authexit  . . . . . . . . . . . .  53
  429.        6.1.24  wfs.automail  . . . . . . . . . . . .  53
  430.        6.1.25  wfs.automail.immediate  . . . . . . .  54
  431.        6.1.26  wfs.command . . . . . . . . . . . . .  54
  432.        6.1.27  wfs.maillist  . . . . . . . . . . . .  55
  433.  
  434.      Chapter 7    A Few Hints                  57
  435.     7.1  Extended Logging  . . . . . . . . . . . . .  57
  436.     7.2  Testing WFS . . . . . . . . . . . . . . . .  57
  437.     7.3  Forging a Request . . . . . . . . . . . . .  58
  438.  
  439.      Chapter 8    Messages                  60
  440.  
  441.      Appendix A                                           61
  442.     A.1  Technical Support . . . . . . . . . . . . .  61
  443.     A.2  Known Problems  . . . . . . . . . . . . . .  61
  444.     A.3  Future Direction  . . . . . . . . . . . . .  61
  445.     A.4  Acknowledgments . . . . . . . . . . . . . .  62
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.                    vi
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464. b i r d s o n g
  465.                      WFS User Guide and Reference
  466.  
  467.                        What's New in This Release
  468. _________________________________________________________________
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.                 Chapter 1
  476.  
  477.            What's New in This Release
  478.  
  479.  
  480. Release 3.0 adds some new features to WFS.
  481.  
  482. WFS Release 3.0 is fully compatible with WFS Release 2.0.
  483. Requests queued via WFSREQST release 2.0 may be processed by
  484. WFSSENDF release 3.0.
  485.  
  486. o   Digest form Mailing Lists are now supported.
  487.  
  488. o   Mailing lists replies can now be directed via SysOp controls
  489.     in the MAILLIST.CFG file.
  490.  
  491. o   WFSREQST now parses the 'Recieved:' mail header, if present,
  492.     to resolve the target address of an incomming mail message.
  493.  
  494. o   The "-U" command line argument, a heretofore undocumented
  495.     feature in WFSREQST, is now documented. The "-U" argument
  496.     forces the "To:" header to be the operand of the "-U"
  497.     argument. Use this if your upstream sites insist on re-
  498.     writing mail headers so that WFSREQST cannot recognize them.
  499.  
  500. o   The 'AddMember' command now causes the Welcome message to be
  501.     sent to the newly added member of the mailing list.
  502.  
  503. o   The user command 'ReplyTo' has been added.
  504.  
  505. o   Mail headers for outbound Mailing List messages are more
  506.     terse. Tighter conformance to RFC822 has been added.
  507.  
  508. o   Improved error checking and reporting. Storage exhaustion
  509.     conditions are detected and reported better.
  510.  
  511. o   WFS no longer insists on finding the 'bin' STATIC file
  512.     statement.
  513.  
  514. o   General documentation improvements.
  515.  
  516. o   Alas, a ShareWare price increase.
  517.  
  518. o   New ShareWare payment options for WFS users in non-USA
  519.     countries.
  520.  
  521.  
  522.  
  523. _________________________________________________________________
  524.                Release 3.0
  525.  
  526.                              page -7-
  527.  
  528.  
  529.  
  530. b i r d s o n g
  531.                      WFS User Guide and Reference
  532.  
  533.                              Introduction
  534. _________________________________________________________________
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.                 Chapter 2
  542.  
  543.               Introduction
  544.  
  545.  
  546. WFS began its life as a simple Mail Based Archive Server. Since
  547. its first public release, WFS has been enhanced with a number of
  548. features. It is a misnomer to call it a "File Server" at this
  549. point, because of the addition of unrelated features, but its
  550. name will endure.
  551.  
  552.  
  553. 2.1  Overview
  554.  
  555. WFS is fully integrated with Waffle. WFS gets much of its
  556. configuration data from Waffle's STATIC file just as Waffle does.
  557. WFS also adds its own unique statements to Waffle's STATIC file.
  558. These statements define configuration data, enable features, and
  559. customize the appearance of WFS to the SysOp and to end users.
  560.  
  561. Waffle permits the routing of mail messages via the ALIASES file.
  562. That is: you can cause mail messages to be forwarded to a
  563. different user, posted to a newsgroup, or processed by a program.
  564. WFS is based on the principle that via the ALIASES file, mail
  565. messages can be processed by WFS when Waffle is processing mail.
  566. The incoming message is routed to the WFSREQST program.
  567.  
  568. WFSREQST may handle a message in its entirety. That is, it may
  569. read and interpret the message and take some action itself,
  570. possibly sending mail to the originator of the incoming message.
  571. WFS may also interpret the incoming message and write data to a
  572. file for the WFSSENDF program to process at a later time: a Work
  573. Queue.
  574.  
  575. The WFSSENDF program processes the Work Queue. Each file in the
  576. work queue is processed on a First In First Out (FIFO) basis. The
  577. WFSSENDF program may be run each cycle of Waffle's RUN.BAT file
  578. or at specific times via Waffle's SCHEDULE file.
  579.  
  580. WFS is configurable so that high volumes of mail addressed to the
  581. server do not saturate the system. The number of bytes
  582. representing a response to a command can be limited on a per
  583. message basis, per day basis, and on work queue size.
  584.  
  585.  
  586.  
  587.  
  588.  
  589. _________________________________________________________________
  590.                Release 3.0
  591.  
  592.                              page -8-
  593.  
  594.  
  595.  
  596. b i r d s o n g
  597.                      WFS User Guide and Reference
  598.  
  599.                              Introduction
  600. _________________________________________________________________
  601.  
  602.  
  603.  
  604. The WFS rate limiting features provide a BBS operator with the
  605. ability to manage a varying traffic rate without constant
  606. intervention.
  607.  
  608. WFS's MBAS feature restricts access to files using Waffle's DIRS
  609. file. Only directories named in Waffle's DIRS file can be
  610. accessed by a mail request. A directory may be accessable by
  611. interactive users, but not via WFS; similarly, mail users may
  612. have access to directories not accessable to interactive users.
  613.  
  614. The SysOp may deny access to WFS features. WFS provides a simple
  615. "deny list" method for excluding UserIDs, sites, domains or other
  616. string data expressed in an incomming message's reply address.
  617. More sophisticated exclusion techniques are provided by an
  618. Autorization User Exit program; the SysOp is responsible for
  619. providing the Authorization exit program.
  620.  
  621. WFS supplements restrictive security with an audit trail. WFS
  622. programs write a log of all activity to the WFSLOG file in the
  623. Waffle ADMIN directory. The SysOp has good foot prints to track
  624. and resolve problems in the WFSLOG.
  625.  
  626.  
  627. 2.2  Mail Based Archive Server
  628.  
  629. A mail based archive server permits an email message to act like
  630. an internet FTP. What's that?
  631.  
  632. From a remote computer, a "requestor" sends email to a UserID
  633. routed to WFSREQST. The message body contains commands
  634. representing requests to transmit a file, via email, to the
  635. requestor.
  636.  
  637. WFSREQST will queue the request for processing later by WFSSENDF.
  638.  
  639. Because binary data, such as .EXE, .ZIP, etc. files cannot be
  640. sent directly via email, WFSSENDF invokes the UUENCODE program to
  641. convert binary files to ASCII files that are acceptable to
  642. network mailers. The encoded files are then mailed by WFSSENDF by
  643. invoking Waffle's RMAIL program. ASCII files mail be sent without
  644. uuencoding.
  645.  
  646. A list of files available for MBAS retrieval is created by the
  647. WFSFILES program. This list is can be retrieved by a command.
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655. _________________________________________________________________
  656.                Release 3.0
  657.  
  658.                              page -9-
  659.  
  660.  
  661.  
  662. b i r d s o n g
  663.                      WFS User Guide and Reference
  664.  
  665.                              Introduction
  666. _________________________________________________________________
  667.  
  668.  
  669.  
  670. 2.3  Automatic Mailing Facility
  671.  
  672. The AutoMail facility builds upon WFS's MBAS feature. Where the
  673. MBAS requires the email originator to explicitly name, in the
  674. message body, the file he wants sent, the AutoMail facility
  675. determines which file to send based on which UserID the email was
  676. addressed to.
  677.  
  678. The AutoMail facility may operate in two distinct modes:
  679. Immediate and Deferred. Immediate mode provides for immediate
  680. responses, that is: WFS sends the requested file as soon as it
  681. interprets the incomming message.
  682.  
  683. In Deferred mode, WFS queues the request for later processing by
  684. the WFSSENDF program.
  685.  
  686.  
  687. 2.4  Remote Command Execution Facility
  688.  
  689. The Remote Command Execution Facility permits the SysOp to define
  690. custom commands that may be invoked when the WFSREQST program
  691. interprets that command in the message body.
  692.  
  693. The command is executed by the WFSREQST program and the results
  694. can be mailed back to the message originator.
  695.  
  696. This facility is protected by a required password expressed in
  697. the message body: No correct password, no command execution.
  698.  
  699.  
  700. 2.5  Mailing List Server
  701.  
  702. The principle of a mailing list is simple enough: Mail addressed
  703. to the mailing list's UserID is forwarded to all members of the
  704. mailing list.
  705.  
  706. Waffle, alone, provides basic mailing list features by way of its
  707. ALIASES file. The SysOp must manually create and maintain entries
  708. in the ALIASES file for each mailing list maintained on the
  709. system.
  710.  
  711. WFS's Mailing List feature can be configured to operate in three
  712. modes: Open Mailing List; OneWay Mailing List; Digest Mailing
  713. List.
  714.  
  715. When a Mailing List is configured as an Open list, the list may
  716. be posted to by anyone, subject to SysOp controls.
  717.  
  718.  
  719.  
  720.  
  721. _________________________________________________________________
  722.                Release 3.0
  723.  
  724.                             page -10-
  725.  
  726.  
  727.  
  728. b i r d s o n g
  729.                      WFS User Guide and Reference
  730.  
  731.                              Introduction
  732. _________________________________________________________________
  733.  
  734.  
  735.  
  736. When a Mailing List is configured as a OneWay list, only a list
  737. moderator may post to the mailing list. Replies to postings are
  738. sent to the list's moderator.
  739.  
  740. When a Mailing List is configured as a Digest list, postings to
  741. the list are saved until the list's moderator, or a 'cron' job,
  742. releases the list. When released, a digest of accumulated
  743. articles is made and the digest is sent to members of the list.
  744. The digest conforms to RFC1153.
  745.  
  746.  
  747. 2.6  Supported Environment
  748.  
  749. WFS operates on IBM PCs and compatible clones; it operates where
  750. you already run Waffle. WFS is designed to operate with MS-DOS
  751. 3.3 or higher. WFS has been tested with MS-DOS 3.3, 5.0, 6.0. WFS
  752. has been tested with DblSpace.
  753.  
  754. This release of WFS supports Waffle Release 1.65. This release is
  755. expected to operate with Waffle 1.66, when issued. WFS 3.0 will
  756. not operate with Waffle 1.64 because of the changes to Waffles
  757. Files sub-system introduced in Waffle 1.65.
  758.  
  759. Waffle and WFS have been successfully run together under Windows
  760. 3.0. and 3.1
  761.  
  762. WFS has been tested on a generic 8 MHz 80286 AT compatible
  763. machine and a generic 33 MHz 80386 AT compatible machine. WFS
  764. users have reported successful execution on everything from 8088
  765. based machines through 80486 machines. WFS is reported to run
  766. under DesqView.
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787. _________________________________________________________________
  788.                Release 3.0
  789.  
  790.                             page -11-
  791.  
  792.  
  793.  
  794. b i r d s o n g
  795.                      WFS User Guide and Reference
  796.  
  797.                      Message Command Language
  798. _________________________________________________________________
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.                 Chapter 3
  806.  
  807.             Message Command Language
  808.  
  809.  
  810. WFS implements a number of commands interpreted in an incomming
  811. mail message. Each of these commands is optional; the SysOp may
  812. selectively enable any, all or none of these commands via
  813. statements in the STATIC file. See "wfs.enable.*" on page 52 for
  814. directions to enable commands.
  815.  
  816. There are some general rules for commands:
  817.  
  818. o   Commands and operands are, in general, not case sensitive;
  819.     the operand of the "password" command is case sensitive.
  820.  
  821. o   Leading spaces are permitted before the command. Commands
  822.     must be the first token on a line.
  823.  
  824. o   A '#' character as the first character on a line is treated
  825.     as a comment. The line does not cause an error.
  826.  
  827. o   Blank lines are ignored.
  828.  
  829. o   A line beginning with the string "--" is treated as end of
  830.     input. The remainder of the message is ignored.
  831.  
  832. The built-in WFS commands are:
  833.  
  834.      HELP
  835.      DIR
  836.      NEWFILES
  837.      GET
  838.      REPLYTO
  839.      QUIT
  840.      PING
  841.      COOKIE
  842.      PASSWORD
  843.      JOIN
  844.      UNJOIN
  845.      ARCHIVE
  846.      MEMBERS
  847.      ADDMEMBER
  848.      DROPMEMBER
  849.      DIGEST
  850.  
  851.  
  852.  
  853. _________________________________________________________________
  854.                Release 3.0
  855.  
  856.                             page -12-
  857.  
  858.  
  859.  
  860. b i r d s o n g
  861.                      WFS User Guide and Reference
  862.  
  863.                      Message Command Language
  864. _________________________________________________________________
  865.  
  866.  
  867.  
  868. The SysOp may add site specific commands to the WFS built-in
  869. commands via the "Remote Command Execution Facility". See that
  870. topic later in this manual.
  871.  
  872.  
  873. 3.1  The HELP Command
  874.  
  875. The HELP command causes WFS to send the file identified via the
  876. "wfs.help" statement in Waffle's STATIC file. The file is
  877. included in the session transcript.
  878.  
  879. Anything after the HELP on the line is ignored.
  880.  
  881. The SysOp may selectively enable and optionally assign multiple
  882. aliases for the HELP command using the wfs.enable.help STATIC
  883. file statement.
  884.  
  885.  
  886. 3.2  The DIR Command
  887.  
  888. The DIR command causes WFS to send the file identified via the
  889. "wfs.filelist" statement in Waffle's STATIC file. The request for
  890. the directory is queued for later transmission.
  891.  
  892. Anything after the DIR on the line is ignored.
  893.  
  894. The SysOp may assign multiple names for the DIR command using the
  895. wfs.enable.dir STATIC file statement.
  896.  
  897.  
  898. 3.3  The NEWFILES Command
  899.  
  900. The NEWFILES command causes WFS to send a list of files newer
  901. that the user specified date. The request for NEWFILES is queued
  902. like a the DIR request.
  903.  
  904. The systax for the NEWFILES command is:
  905.  
  906.      NEWFILES <date>
  907.  
  908. <date> is required. <date> has the form of mm-dd-yy. WFS is
  909. strict about checking the form of <date>; if it does not look
  910. like it expects, the command will be rejected.
  911.  
  912. A valid specification for the NEWFILES command is:
  913.  
  914.      NEWFILES 02-15-92
  915.  
  916.  
  917.  
  918.  
  919. _________________________________________________________________
  920.                Release 3.0
  921.  
  922.                             page -13-
  923.  
  924.  
  925.  
  926. b i r d s o n g
  927.                      WFS User Guide and Reference
  928.  
  929.                      Message Command Language
  930. _________________________________________________________________
  931.  
  932.  
  933.  
  934. The SysOp may selectively enable and optionally assign multiple
  935. aliases for the NEWFILES command using the wfs.enable.newfiles
  936. STATIC file statement.
  937.  
  938.  
  939. 3.4  The GET Command
  940.  
  941. The GET command causes WFS to send a file to the requestor.
  942.  
  943. The syntax for the GET command is:
  944.  
  945.      GET <filespec> [uue[ncode] | xxe[ncode]]
  946.  
  947. <filespec> is required. <filespec> must specify a path, but
  948. without a drive specification. The filespec is not relative to
  949. any directory. Unlike interactive waffle, where the user is
  950. placed in the directory defined by Waffle's "files" STATIC file
  951. statement, WFS has no default starting directory.
  952.  
  953. uuencode or xxencode is optional and may be abreviated as "uue"
  954. or "xxe", respectively. If neither are specified, the file is
  955. sent according to the rules for sending files set by the system
  956. administrator. That is: the system administrator may define a
  957. list of file extensions that will always be uuencoded for
  958. transmission.
  959.  
  960. If uuencode is specified, the file is sent uuencoded.
  961.  
  962. If xxencode is specified, the file is sent xxencoded.
  963.  
  964. For example:
  965.  
  966.      GET /public/wfs300.zip
  967.      GET /public/waffle/waf165.zip
  968.  
  969. are syntactically correct.
  970.  
  971.      GET c:/autoexec.bat
  972.      GET e:/wfs/src/wfsreqst.c
  973.  
  974. are not syntactically correct; both incorrect examples have a
  975. drive specifier.
  976.  
  977.      GET autoexec.bat
  978.      GET src/wfsreqst.c
  979.  
  980. are not correct. Both do not specify the leading slash.
  981.  
  982.  
  983.  
  984.  
  985. _________________________________________________________________
  986.                Release 3.0
  987.  
  988.                             page -14-
  989.  
  990.  
  991.  
  992. b i r d s o n g
  993.                      WFS User Guide and Reference
  994.  
  995.                      Message Command Language
  996. _________________________________________________________________
  997.  
  998.  
  999.  
  1000. The SysOp may selectively enable and optionally assign multiple
  1001. aliases for the GET command using the wfs.enable.get STATIC file
  1002. statement.
  1003.  
  1004.  
  1005. 3.5  The REPLYTO Command
  1006.  
  1007. The REPLYTO command causes WFS to override the reply address
  1008. found by parsing the "From:" or "Reply-to:" message headers.
  1009.  
  1010. The syntax for the REPLYTO command is:
  1011.  
  1012.      replyto <replyAddress>
  1013.  
  1014. The SysOp may selectively enable and optionally assign multiple
  1015. aliases for the REPLYTO command using the wfs.enable.replyto
  1016. STATIC file statement.
  1017.  
  1018.  
  1019. 3.6  The PING Command
  1020.  
  1021. The PING command causes WFS make a simple reply, via the session
  1022. transcript, to the requestor. To test the path to a WFS at a
  1023. site, send the PING command.
  1024.  
  1025. The SysOp may selectively enable and optionally assign multiple
  1026. aliases for the PING command using the wfs.enable.ping STATIC
  1027. file statement.
  1028.  
  1029.  
  1030. 3.7  The COOKIE Command
  1031.  
  1032. The COOKIE command causes WFS to write a random cookie from the
  1033. Waffle COOKIES file into the session transcript.
  1034.  
  1035. The number of cookies per message is limited.
  1036.  
  1037. The SysOp may selectively enable and optionally assign multiple
  1038. aliases for the COOKIE command using the wfs.enable.cookie STATIC
  1039. file statement.
  1040.  
  1041.  
  1042. 3.8  The QUIT Command
  1043.  
  1044. The word "quit" as the first token on a line causes WFS to quit
  1045. processing input as if end of input had occurred.
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051. _________________________________________________________________
  1052.                Release 3.0
  1053.  
  1054.                             page -15-
  1055.  
  1056.  
  1057.  
  1058. b i r d s o n g
  1059.                      WFS User Guide and Reference
  1060.  
  1061.                      Message Command Language
  1062. _________________________________________________________________
  1063.  
  1064.  
  1065.  
  1066. The SysOp may selectively enable and optionally assign multiple
  1067. aliases for the QUIT command using the wfs.enable.quit STATIC
  1068. file statement.
  1069.  
  1070.  
  1071. 3.9  The PASSWORD Command
  1072.  
  1073. Some commands require the user to specify a password in the
  1074. incomming message before invoking the SysOp defined command. The
  1075. syntax for the PASSWORD command is:
  1076.  
  1077.      password <string>
  1078.  
  1079. Where string is the password for the SysOp defined command that
  1080. will appear in the input stream. The operand of the PASSWORD
  1081. command is case sensitive.
  1082.  
  1083. The SysOp may selectively enable and optionally assign multiple
  1084. aliases for the PASSWORD command using the wfs.enable.password
  1085. STATIC file statement.
  1086.  
  1087.  
  1088. 3.10  The JOIN Command
  1089.  
  1090. The JOIN command causes WFS to add the originator of the email to
  1091. a mailing list.
  1092.  
  1093. The join command is mailed to the command server address.
  1094.  
  1095. The syntax for the JOIN command is:
  1096.  
  1097.      join <listname>
  1098.  
  1099. Where <listname> is the name of the mailing list.
  1100.  
  1101. To subscribe to the mailing list, he would say:
  1102.  
  1103.      join test-list
  1104.  
  1105. If a subscriber wants to mail to all subscribers, then addresses
  1106. mail as:
  1107.  
  1108.      test-list@FroBaz.com
  1109.  
  1110. The syntax of the other mail list commands is similar.
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117. _________________________________________________________________
  1118.                Release 3.0
  1119.  
  1120.                             page -16-
  1121.  
  1122.  
  1123.  
  1124. b i r d s o n g
  1125.                      WFS User Guide and Reference
  1126.  
  1127.                      Message Command Language
  1128. _________________________________________________________________
  1129.  
  1130.  
  1131.  
  1132. The SysOp may selectively enable and optionally assign multiple
  1133. aliases for the JOIN command using the wfs.enable.join STATIC
  1134. file statement.
  1135.  
  1136.  
  1137. 3.11  The UNJOIN Command
  1138.  
  1139. The UNJOIN command causes WFS to remove the originator of the
  1140. email from a mailing list.
  1141.  
  1142. The syntax for the UNJOIN command is:
  1143.  
  1144.      unjoin <listname>
  1145.  
  1146. The SysOp may selectively enable and optionally assign multiple
  1147. aliases for the UNJOIN command using the wfs.enable.unjoin STATIC
  1148. file statement.
  1149.  
  1150.  
  1151. 3.12  The ARCHIVE Command
  1152.  
  1153. The ARCHIVE command causes WFS to send all archived messages for
  1154. the named mailing list to the requestor. The request is queued
  1155. for subsequent processing.
  1156.  
  1157. The syntax for the ARCHIVE command is:
  1158.  
  1159.      archive <listname>
  1160.  
  1161. The SysOp may selectively enable and optionally assign multiple
  1162. aliases for the ARCHIVE command using the wfs.enable.archive
  1163. STATIC file statement.
  1164.  
  1165.  
  1166. 3.13  The MEMBERS Command
  1167.  
  1168. The MEMBERS command causes WFS to send a list of all members
  1169. (subscribers) to the originator of this message.
  1170.  
  1171.      members <listname>
  1172.  
  1173. The SysOp may selectively enable and optionally assign multiple
  1174. aliases for the MEMBERS command using the wfs.enable.members
  1175. STATIC file statement.
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183. _________________________________________________________________
  1184.                Release 3.0
  1185.  
  1186.                             page -17-
  1187.  
  1188.  
  1189.  
  1190. b i r d s o n g
  1191.                      WFS User Guide and Reference
  1192.  
  1193.                      Message Command Language
  1194. _________________________________________________________________
  1195.  
  1196.  
  1197.  
  1198. 3.14  The ADDMEMBER Command
  1199.  
  1200. The ADDMEMBER command is used to add a member to a mailing list.
  1201. Use the ADDMEMBER, as compared with the JOIN command, to add a
  1202. member other than the originator of the message to a mailing
  1203. list. The syntax of the ADDMEMBER command is:
  1204.  
  1205.      addmember <listname> <member_address>
  1206.  
  1207. The ADDMEMBER command requires that a password be specified
  1208. before the ADDMEMBER command; see the PASSWORD command. The
  1209. password is checked, case significant, against the password for
  1210. the mailing list named in the command. An exact match is required
  1211. for the member_address to be added to the member list.
  1212.  
  1213. This command is intended for use where the mailing list is
  1214. configured with the JOIN command disabled for the list. A mailing
  1215. list owner can add a member to his mailing list using this
  1216. command. The following example demonstrates a password followed
  1217. by an ADDMEMBER:
  1218.  
  1219.      password  TheList'sPassword
  1220.      addmember test-list frobaz@foo.bar.com
  1221.  
  1222. When using this command, the member_address must be specified
  1223. exactly as it would appear in the "From:" or "Reply-to:" message
  1224. header line. This is significant because some mailers re-write
  1225. addresses for reasons known only to the gods and perverse site
  1226. administrators.
  1227.  
  1228. The ADDMEMBER command causes the Mailing List's 'welcome' file to
  1229. be sent to the new member.
  1230.  
  1231. The SysOp may selectively enable and optionally assign multiple
  1232. aliases for the ADDMEMBER command using the wfs.enable.addmember
  1233. STATIC file statement.
  1234.  
  1235.  
  1236. 3.15  The DROPMEMBER Command
  1237.  
  1238. The DROPMEMBER command is used to delete a member from a mailing
  1239. list. Use the DROPMEMBER command, as compared with the UNJOIN
  1240. command, to remove a member, other than the originator of the
  1241. message, from a mailing list. The syntax of the DROPMEMBER
  1242. command is:
  1243.  
  1244.      dropmember <listname> <member_address>
  1245.  
  1246.  
  1247.  
  1248.  
  1249. _________________________________________________________________
  1250.                Release 3.0
  1251.  
  1252.                             page -18-
  1253.  
  1254.  
  1255.  
  1256. b i r d s o n g
  1257.                      WFS User Guide and Reference
  1258.  
  1259.                      Message Command Language
  1260. _________________________________________________________________
  1261.  
  1262.  
  1263.  
  1264. The DROPMEMBER command requires that a password be specified
  1265. before the DROPMEMBER command; see the PASSWORD command. The
  1266. password is checked, case significant, against the password for
  1267. the mailing list named in the command. An exact match is required
  1268. for the member_address to be dropped from the member list.
  1269.  
  1270. When using this command, the member_address must be specified
  1271. exactly as it appears in the member file for the named mailing
  1272. list.
  1273.  
  1274. The SysOp may selectively enable and optionally assign multiple
  1275. aliases for the DROPMEMBER command using the
  1276. wfs.enable.dropmember STATIC file statement.
  1277.  
  1278.  
  1279. 3.16  The DIGEST Command
  1280.  
  1281. The DIGEST command is used to release a Digest form Mailing List
  1282. for processing.
  1283.  
  1284.      digest <listname>
  1285.  
  1286. The DIGEST command requires that a password be specified before
  1287. the DIGEST command; see the PASSWORD command. The password is
  1288. checked, case significant, against the password for the mailing
  1289. list named in the command. An exact match is required for digest
  1290. processing to be performed.
  1291.  
  1292. The SysOp may selectively enable and optionally assign multiple
  1293. aliases for the DIGEST command using the wfs.enable.digest STATIC
  1294. file statement.
  1295.  
  1296.  
  1297. 3.17  SysOp Defined Commands
  1298.  
  1299. The SysOp may define commands unique to this site.
  1300.  
  1301. See "Remote Command Execution Facility" on page 29 for a
  1302. description of this feature.
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315. _________________________________________________________________
  1316.                Release 3.0
  1317.  
  1318.                             page -19-
  1319.  
  1320.  
  1321.  
  1322. b i r d s o n g
  1323.                      WFS User Guide and Reference
  1324.  
  1325.                            Installing WFS
  1326. _________________________________________________________________
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.                 Chapter 4
  1334.  
  1335.              Installing WFS
  1336.  
  1337.  
  1338. Installing WFS is not hard, but it does presuppose a certain
  1339. level of skill with both MS-DOS, various utility programs, and
  1340. with Waffle. You should be experienced using MS-DOS. You should
  1341. know how to use PKUNZIP. You should also have experience as a
  1342. Waffle System Operator (SysOp). You will need to understand the
  1343. principle of Waffle's static file. Experience with making changes
  1344. to the static file is highly desirable. See the Waffle
  1345. documentation.
  1346.  
  1347. There are several steps to installing WFS.
  1348.  
  1349. o   Planning your configuration.
  1350.  
  1351. o   The MS-DOS Environment.
  1352.  
  1353. o   Installing the Programs.
  1354.  
  1355. o   Updating Waffle's STATIC file.
  1356.  
  1357. o   Configuring the Mail Based Archive Server.
  1358.  
  1359. o   Configuring AutoMail
  1360.  
  1361. o   Configuring the Remote Command Execution Facility
  1362.  
  1363. o   Configuring Mailing Lists
  1364.  
  1365.  
  1366. 4.1  Planning your Configuration
  1367.  
  1368. The planning issues for WFS are:
  1369.  
  1370. o   What user ID will receive incoming requests?
  1371.  
  1372. o   What user ID will mail responses to requests?
  1373.  
  1374. o   Disk space for Waffle's spool and temporary directories.
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381. _________________________________________________________________
  1382.                Release 3.0
  1383.  
  1384.                             page -20-
  1385.  
  1386.  
  1387.  
  1388. b i r d s o n g
  1389.                      WFS User Guide and Reference
  1390.  
  1391.                            Installing WFS
  1392. _________________________________________________________________
  1393.  
  1394.  
  1395.  
  1396. 4.1.1  Incoming User IDs
  1397.  
  1398. WFS may use several different incomming addresses, depending on
  1399. which features you select. In all cases, one UserID will be used
  1400. as the "server's" address. This UserID will process incomming
  1401. commands. Other UserIDs will be used for AutoMail and for Mailing
  1402. Lists.
  1403.  
  1404. Choose the user ID for WFS's server to reflect its use. For
  1405. example:
  1406.  
  1407.      File-Request
  1408.      Archive-Server
  1409.      listserv
  1410.      server
  1411.  
  1412. The ID should be different from the ID that mails responses to
  1413. requests.
  1414.  
  1415. 4.1.2  Outbound User ID
  1416.  
  1417. The user ID for outbound requests should be different from the ID
  1418. that receives requests (How can I emphasize this enough!). Should
  1419. a response to a request bounce, it will be returned to this ID.
  1420.  
  1421. You will have to create a directory in Waffle's USER directory
  1422. for this ID. WFSREQST writes files representing queued requests
  1423. in this directory. WFSSENDF reads the queued requests from this
  1424. directory.
  1425.  
  1426. The outbound UserID should have an account in Waffle's PASSWORD
  1427. file. Here's why: If you run the SYSMAN CLEAN command, the
  1428. directory, and the files contained in the directory, belonging to
  1429. the outbound UserID will be deleted.
  1430.  
  1431. 4.1.3  Disk Space
  1432.  
  1433. WFS uses disk space in the Waffle USER directory to store queued
  1434. requests. The queue files are small, but there may be large
  1435. numbers of them, depending on how you set WFS's rate limiting
  1436. options. You may have to determine this disk usage requirement by
  1437. experiment.
  1438.  
  1439. Mailing files may use large amounts of space in the Waffle spool
  1440. directory. The drive containing the spool directory should have
  1441. enough space to accommodate the 2.5 times the number of bytes
  1442. specified in the wfs.daylimit configuration option.
  1443.  
  1444.  
  1445.  
  1446.  
  1447. _________________________________________________________________
  1448.                Release 3.0
  1449.  
  1450.                             page -21-
  1451.  
  1452.  
  1453.  
  1454. b i r d s o n g
  1455.                      WFS User Guide and Reference
  1456.  
  1457.                            Installing WFS
  1458. _________________________________________________________________
  1459.  
  1460.  
  1461.  
  1462. When uuencoding files for mailing, WFS uses the directory
  1463. specified in Waffle's "temporary" static file statement. The
  1464. drive containing this directory should be 2.5times the size of
  1465. the largest file that could be mailed.
  1466.  
  1467.  
  1468. 4.2  The MS-DOS Environment
  1469.  
  1470. The WFS programs expect to find the environment variables
  1471. "WAFFLE" and "TZ". The "WAFFLE" environment variable should
  1472. reference the same file as the file with which you normally run
  1473. WAFFLE.
  1474.  
  1475. The TZ environment variable should be set in either of two ways
  1476. depending on whether daylight savings time is in effect:
  1477.  
  1478.      set tz=xxxyzzz
  1479.  
  1480. when daylight savings time is in effect.
  1481.  
  1482. Or...
  1483.  
  1484.      set tz=xxxy
  1485.  
  1486. when daylight savings time is not in effect.
  1487.  
  1488. Where:
  1489.  
  1490. xxx        Is the Time Zone abbreviation, for example PST
  1491.         (Pacific Standard Time).
  1492.  
  1493. y        Is the offset, in hours west, from UTC (aka GMT).
  1494.  
  1495. zzz        Is the Time Zone abbreviation, for example PDT
  1496.         (Pacific Daylight Time).
  1497.  
  1498. For example, to set the "TZ" environment variable for the US
  1499. Pacific time zone, daylight time, set the environment using the
  1500. command:
  1501.  
  1502.      set tz=PST8PDT
  1503.  
  1504. The WFS programs use the "TZ" environment variable during startup
  1505. processing to display the startup message, containing the date
  1506. and time, including the timezone abbreviation. After
  1507. internalizing the STATIC file the WFS programs use the value of
  1508. "timezone" STATIC file statement when a timezone value is
  1509. required.
  1510.  
  1511.  
  1512.  
  1513. _________________________________________________________________
  1514.                Release 3.0
  1515.  
  1516.                             page -22-
  1517.  
  1518.  
  1519.  
  1520. b i r d s o n g
  1521.                      WFS User Guide and Reference
  1522.  
  1523.                            Installing WFS
  1524. _________________________________________________________________
  1525.  
  1526.  
  1527.  
  1528. If the WFS programs do not find the "TZ" environment variable
  1529. during startup processing, the programs use "GMT" as a default
  1530. Time Zone abbreviation in the startup message.
  1531.  
  1532.  
  1533. 4.3  Installing the Programs
  1534.  
  1535. Copy the WFS*.EXE files into a directory reachable by the MS-DOS
  1536. PATH environment variable while Waffle is running. The WAFFLE/BIN
  1537. directory is suggested.
  1538.  
  1539. UnZip the file UUEXE521.ZIP. Copy the executable files into the
  1540. WAFFLE/BIN directory.
  1541.  
  1542. 4.3.1  Configuring WFSREQST
  1543.  
  1544. Edit Waffle's SYSTEM/ALIASES file. For the user ID you want to
  1545. receive mail on behalf of WFS, make an entry that redirects mail
  1546. for that ID into the program wfsreqst.exe. For example:
  1547.  
  1548.      file-request | f:/waffle/bin/wfsreqst
  1549.  
  1550. The user ID for the request program need not have a directory in
  1551. the WAFFLE/USER directory.
  1552.  
  1553. WFSREQST accepts one command line argument: The syntax for the
  1554. command line arguments is:
  1555.  
  1556. -U<address> Force "To:" mail header to <address>
  1557.  
  1558.         Where <address> is the address of an AutoMail or
  1559.         Mailing List.
  1560.  
  1561.         Use this option when an upstream site insists on re-
  1562.         writing "To:" mail headers to the point where
  1563.         WFSREQST cannot determine the address. This argument
  1564.         is not required where mail is directed at WFSREQST's
  1565.         command processing.
  1566.  
  1567. 4.3.2  Configuring WFSSENDF
  1568.  
  1569. Program WFSSENDF operates on queued requests to mail files to
  1570. requestors. WFSSENDF may be run from the Waffle RUN.BAT batch
  1571. file or it may be run from the Waffle SCHEDULE file.
  1572.  
  1573. If you choose to run it from the RUN.BAT batch file, you may want
  1574. to place it after execution of the UUXQT program. This will cause
  1575. newly processed requests to be responded to immediately.
  1576.  
  1577.  
  1578.  
  1579. _________________________________________________________________
  1580.                Release 3.0
  1581.  
  1582.                             page -23-
  1583.  
  1584.  
  1585.  
  1586. b i r d s o n g
  1587.                      WFS User Guide and Reference
  1588.  
  1589.                            Installing WFS
  1590. _________________________________________________________________
  1591.  
  1592.  
  1593.  
  1594. If you choose to run it from the SCHEDULE file, you may want to
  1595. schedule it at a time of infrequent interactive use and at a time
  1596. when passing mail to other sites is cheapest. You may also want
  1597. to schedule it just before polling another site.
  1598.  
  1599. The user ID that will be the mailer needs a directory in the
  1600. WAFFLE/USER directory. You must create this directory; WFS will
  1601. not do it for you. For example, at Birdsong, the user ID that
  1602. mails files to requestors is called FILESERV. WFS will create and
  1603. delete files in this directory.
  1604.  
  1605.  
  1606. 4.3.2.1  Command Line Arguments
  1607.  
  1608. By default, WFSSENDF processes all work queue items in the work
  1609. queue each time it is run.
  1610.  
  1611. If you run WFSSENDF from the SCHEDULE file you may want to
  1612. process only certain types of work queue items depending on the
  1613. time of day. For example you may run WFSSENDF several times per
  1614. day, but during the daytime you do not want to process work queue
  1615. items for file requests to minimize telephone costs. Each work
  1616. queue type may be suppressed using a command line argument.
  1617.  
  1618. The syntax for these command line arguments is:
  1619.  
  1620. -A        Suppress AutoMail processing
  1621.  
  1622. -F        Suppress Files processing.
  1623.  
  1624. -D        Suppress Directory processing.
  1625.  
  1626. -N        Suppress NewFiles processing.
  1627.  
  1628. -M        Suppress Mailing List processing.
  1629.  
  1630. -R        Suppress Mailing List Archive processing.
  1631.  
  1632. -T        Suppress Mailing List Digest processing.
  1633.  
  1634. For example, to prevent WFSSENDF from processing work queue items
  1635. for Files, Directories, and NewFiles:
  1636.  
  1637.      WFSSENDF -F -D -N
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645. _________________________________________________________________
  1646.                Release 3.0
  1647.  
  1648.                             page -24-
  1649.  
  1650.  
  1651.  
  1652. b i r d s o n g
  1653.                      WFS User Guide and Reference
  1654.  
  1655.                            Installing WFS
  1656. _________________________________________________________________
  1657.  
  1658.  
  1659.  
  1660. 4.3.3  Configuring an Authorization Exit Program
  1661.  
  1662. An optional authorization exit program may be used to further
  1663. enhance the security of WFS. The System Operator is responsible
  1664. for providing the authorization exit program.
  1665.  
  1666. The authorization exit is invoked after WFSREQST interprets the
  1667. message header in the incomming request. The program is invoked
  1668. with one "command line argument": the interpreted email address
  1669. of the requestor
  1670.  
  1671. The authroization exit will see "argv[0]" as the fully qualified
  1672. pathname of the authorization exit program; "argv[1]" is the
  1673. email address of the requestor; "argv[2]" is NULL. (This babble
  1674. should be meaningful to C language programmers).
  1675.  
  1676. The authorization exit program should return a zero (0) value to
  1677. tell WFSREQST to continue processing the request. A return value
  1678. of one (1) tells WFSREQST to reject the message. Other return
  1679. values are not defined and will cause WFSREQST to terminate
  1680. abnormally.
  1681.  
  1682. When a command is rejected by the authorization exit, WFSREQST
  1683. writes a message to the WFSLOG file.
  1684.  
  1685. To enable use of the authorization exit, use the "wfs.authexit"
  1686. static file statement. WFS.AUTHEXIT should point to the fully
  1687. qualified pathname of the authorization exit program.
  1688.  
  1689. A sample source file, WFSAUTH.C, is provided for those users who
  1690. want to custom tailor the user authorization feature of WFS. The
  1691. authorization exit is not required to use WFS, but is provided
  1692. for users who want the additional control.
  1693.  
  1694. Compile the sample authorization exit using Microsoft C. You may
  1695. use any language, any compiler that accepts command line
  1696. arguments and that supports "return values" to write your own
  1697. authorization exit.
  1698.  
  1699.  
  1700. 4.4  Updating Waffle's STATIC File
  1701.  
  1702. See "Waffle's Static File" on page 46. This section describes all
  1703. the STATIC file variables used by WFS. A sample STATIC file,
  1704. "STATIC.SMP" is provided. you may customize this file to suit
  1705. your requirements.
  1706.  
  1707. Merge this file with your Waffle STATIC file.
  1708.  
  1709.  
  1710.  
  1711. _________________________________________________________________
  1712.                Release 3.0
  1713.  
  1714.                             page -25-
  1715.  
  1716.  
  1717.  
  1718. b i r d s o n g
  1719.                      WFS User Guide and Reference
  1720.  
  1721.                            Installing WFS
  1722. _________________________________________________________________
  1723.  
  1724.  
  1725.  
  1726. 4.5  Other WFS Files
  1727.  
  1728. Sample message files, used by WFS, are provided for your
  1729. customization.
  1730.  
  1731. Install these files by copying them to the directory you have
  1732. selected for the user ID of the mailer. You may place these files
  1733. elsewhere, if you like; WFS's STATIC file statements determine
  1734. the path and filenames for these files.
  1735.  
  1736. o   WELCOME.TXT. WFS pre-pends this file to the session
  1737.     transcript. You will want to modify this file for your site.
  1738.  
  1739. o   SIGNATUR.TXT. WFS appends this file to the session
  1740.     transcript. You will want to modify this file for your site.
  1741.     You almost certainly will not like the contents of the the
  1742.     default file.
  1743.  
  1744. o   HELP.TXT WFS mails this file in response the HELP command.
  1745.     You will want to modify this file for your site.
  1746.  
  1747. Additional files are provided as examples. These files are fully
  1748. annotated to aid you in configuring your system to your needs.
  1749.  
  1750. The sample files are co-ordinated, that is: they all work
  1751. together. For instance, if an entry is required in the STATIC
  1752. file and has a companion entry in the ALIASES file, then the
  1753. companion entry in the ALIASES file is provided.
  1754.  
  1755. o   STATIC.SMP. This is a sample STATIC file.
  1756.  
  1757. o   ALIASES.SMP This is a sample ALIASES file.
  1758.  
  1759. o   MLOPEN.SMP This is a sample Mailing List configuration file
  1760.     for an "Open" mailing list.
  1761.  
  1762. o   MLDIGEST.SMP This is a sample Mailing List configuration file
  1763.     for a "Digest" mailing list.
  1764.  
  1765. o   MLONEWAY.SMP This is a sample Mailing List configuration file
  1766.     for a "One Way" mailing list.
  1767.  
  1768. o   WHATTIME.CDF. This is a sample Command Definition File.
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777. _________________________________________________________________
  1778.                Release 3.0
  1779.  
  1780.                             page -26-
  1781.  
  1782.  
  1783.  
  1784. b i r d s o n g
  1785.                      WFS User Guide and Reference
  1786.  
  1787.                      Configuring WFS Features
  1788. _________________________________________________________________
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.                 Chapter 5
  1796.  
  1797.             Configuring WFS Features
  1798.  
  1799.  
  1800. 5.1  Configuring the Mail Based Archive Server
  1801.  
  1802. The Mail Based Archive Server (MBAS) is WFS's original feature.
  1803. Configuring the MBAS requires a few steps.
  1804.  
  1805. o   Configure STATIC file statements that control WFS's
  1806.     operation. See the "Waffle's Static File" on page 46.
  1807.  
  1808. o   Configuring your SCHEDULE file or RUN.BAT to run the WFSFILES
  1809.     program; the WFSFILES program provides users with a list of
  1810.     files available via the MBAS feature.
  1811.  
  1812.  
  1813. 5.2  Waffle's DIRS file
  1814.  
  1815. WFS uses Waffle's DIRS file to identify directories accessable to
  1816. requestors. WFS uses the "filearea", "/dir=", "/info=" fields
  1817. from each DIRS file entry.
  1818.  
  1819. WFS also uses the tokens "/wfs.deny" and "/wfs.hide" to control
  1820. access and visibility to directories named in the DIRS file
  1821.  
  1822. 5.2.1  /WFS.DENY
  1823.  
  1824. By default, all directories identified by a DIRS file statement
  1825. are accessable to WFS. When WFS finds a DIRS file statement with
  1826. the "/wfs.deny" token, then access to that directory via WFS is
  1827. denied. In the following example:
  1828.  
  1829.      public /dir="f:/public" /access=1
  1830.  
  1831.      waffle /dir="f:/public/waffle" /access=1
  1832.  
  1833.      special /dir="f:/special" /access=9 /wfs.deny
  1834.  
  1835. directories identified by the "public" and "waffle" statements
  1836. are accessable to WFS; the directory identified by the "special"
  1837. statement cannot be accessed by WFS.
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843. _________________________________________________________________
  1844.                Release 3.0
  1845.  
  1846.                             page -27-
  1847.  
  1848.  
  1849.  
  1850. b i r d s o n g
  1851.                      WFS User Guide and Reference
  1852.  
  1853.                      Configuring WFS Features
  1854. _________________________________________________________________
  1855.  
  1856.  
  1857.  
  1858. DIRS file statements having the "/wfs.deny" parameter are not
  1859. listed by the WFSFILES program.
  1860.  
  1861. 5.2.2  /WFS.HIDE
  1862.  
  1863. The "/wfs.hide" token identifies the directory as "invisible" to
  1864. the WFSFILES program. The directory and files in the directory
  1865. are accessable to WFS, but the directory and its contents are not
  1866. shown in program WFSFILES output. Consider this example:
  1867.  
  1868.      public /dir="f:/public" /access=1
  1869.  
  1870.      waffle /dir="f:/public/waffle" /access=1
  1871.  
  1872.      special /dir="f:/special" /access=9 /wfs.hide
  1873.  
  1874. The directory, "special", is now accessable via WFS. The WFSFILES
  1875. program does not show the directory in its output. Only users who
  1876. know of the directory's existence and the contents of the
  1877. directory may request files from this directory.
  1878.  
  1879. 5.2.3  Configuring WFSFILES
  1880.  
  1881. The WFSFILES program reads Waffle's DIRS file. For each entry in
  1882. the DIRS file not having either of "/wfs.deny" or "/wfs.hide"
  1883. token, WFSFILES lists files in this directory to stdout. Stdout
  1884. may be re-directed to a file. For example:
  1885.  
  1886.      WFSFILES >f:\user\fileserv\filelist.txt
  1887.  
  1888. You may want to run WFSFILES via the Waffle SCHEDULE file.
  1889.  
  1890. WFSFILES accepts command line arguments.
  1891.  
  1892.      WFSFILES [-a] [-b] [-s]
  1893.  
  1894. Where:
  1895.  
  1896. -a        Suppress the "File Area:" line on output.
  1897.  
  1898. -b        If a "@banner" file exists in the directory named by
  1899.         the /dirs= statement, print the file to stdout.
  1900.  
  1901. -s        Suppress the "splash" (program ID, date, time, etc.)
  1902.         from the stdout output.
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909. _________________________________________________________________
  1910.                Release 3.0
  1911.  
  1912.                             page -28-
  1913.  
  1914.  
  1915.  
  1916. b i r d s o n g
  1917.                      WFS User Guide and Reference
  1918.  
  1919.                      Configuring WFS Features
  1920. _________________________________________________________________
  1921.  
  1922.  
  1923.  
  1924. 5.3  Automatic Mailing Facility
  1925.  
  1926. The AutoMail facility is the easiest feature of WFS to configure.
  1927.  
  1928. Instructions for configuring the AutoMail facility are described
  1929. in the Chapter titled "Waffle's Static File". See "wfs.automail
  1930. on page 53 and in "wfs.automail.immediate on page 54
  1931.  
  1932. Other STATIC file statements related to uuencode apply to the
  1933. AutoMail facility.
  1934.  
  1935.  
  1936. 5.4  Remote Command Execution Facility
  1937.  
  1938. A few steps are required to create your own commands.
  1939.  
  1940. o   Place a "wfs.command" statement in Waffle's STATIC file.
  1941.  
  1942.     Instructions for coding the "wfs.command" statement are in
  1943.     "wfs.command" on page 54.
  1944.  
  1945. o   Create a "Command Definition File" in the USER directory
  1946.     named by the "wfs.sender" STATIC file statement.
  1947.  
  1948.     The function of the Command Definition File and its syntax is
  1949.     described in the next section.
  1950.  
  1951. o   Create a HELP topic in the "help" file, if you intend to make
  1952.     the command available to other users.
  1953.  
  1954. 5.4.1  The Command Definition File
  1955.  
  1956. The Remote Command Execution Facility, may be enabled by a
  1957. statement in Waffle's STATIC file; a wfs.command statement is
  1958. used to define a command that may be invoked via an incomming
  1959. message.
  1960.  
  1961. The CDF file has the file extension ".CDF"; all active .CDF files
  1962. are stored in the user directory named by the wfs.sender STATIC
  1963. file statement.
  1964.  
  1965. The .CDF file has the same general syntax as Waffle's STATIC
  1966. file:
  1967.  
  1968.      variablename : operand(s)
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975. _________________________________________________________________
  1976.                Release 3.0
  1977.  
  1978.                             page -29-
  1979.  
  1980.  
  1981.  
  1982. b i r d s o n g
  1983.                      WFS User Guide and Reference
  1984.  
  1985.                      Configuring WFS Features
  1986. _________________________________________________________________
  1987.  
  1988.  
  1989.  
  1990. A keyword beginning in column one, followed by optional
  1991. whitespace, followed by the colon character (':'), followed by
  1992. optional whitespace, followed by one or more operands.
  1993.  
  1994. Blank lines are ignored. Lines beginning with '#' or ';' are
  1995. ignored.
  1996.  
  1997. CDF files have the following statements:
  1998.  
  1999. o   FileIdent
  2000.  
  2001. o   Command
  2002.  
  2003. o   Password
  2004.  
  2005. o   UserOperands
  2006.  
  2007. o   MailResults
  2008.  
  2009. o   RecordResults
  2010.  
  2011. The statement identifiers are all case insensitive: you may code
  2012. them in upper, lower or mixed case. Except where noted, the
  2013. operands of these commands are also case insensitive.
  2014.  
  2015. Where a statement is defined to take a "boolean" operator, any of
  2016. "yes", "true", "1" may be used to define the boolean equivalent.
  2017. Any of "no", "false", "0" may be used to define the boolean
  2018. equivalent.
  2019.  
  2020. A sample .CDF file (UDATE.CDF) is included in the distribution of
  2021. WFS. A program, WFSUDATE (executable and source in C), are also
  2022. included in the distribution. These samples can show the effects
  2023. of the Command Execution Facility. The WFSUDATE program is not
  2024. particularly meaningful; it just demonstrates the facility.
  2025.  
  2026. 5.4.1.1  FileIdent
  2027.  
  2028. The FileIdent statement is required. It's operand is the fixed
  2029. value "WFS2Command". The FileIdent statement is used by WFSREQST
  2030. to help identify the file as a WFS CDF file.
  2031.  
  2032. Specify this statement exactly as shown:
  2033.  
  2034.      FileIdent : WFS2Command
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041. _________________________________________________________________
  2042.                Release 3.0
  2043.  
  2044.                             page -30-
  2045.  
  2046.  
  2047.  
  2048. b i r d s o n g
  2049.                      WFS User Guide and Reference
  2050.  
  2051.                      Configuring WFS Features
  2052. _________________________________________________________________
  2053.  
  2054.  
  2055.  
  2056. 5.4.1.2  Command
  2057.  
  2058. The command statement identifies the command to be executed via
  2059. the "system()" library call when this .CDF file is invoked.
  2060.  
  2061. Specify this exactly as you would a command line command. For
  2062. example, if you wanted to run the MS-DOS "DIR" command code the
  2063. command statement as:
  2064.  
  2065.      Command : dir
  2066.  
  2067. You may specify command arguments or input redirection on the
  2068. command statement. DO NOT specify I/O redirection for stdout! CDF
  2069. uses stdout redirection to capture program output when
  2070. MailResults or RecordResults are TRUE.
  2071.  
  2072. For example, you could code a complex command statment as:
  2073.  
  2074.      Command : doittoit -fgQRS -o thing <afile
  2075.  
  2076. ... But why?
  2077.  
  2078. 5.4.1.3  Password
  2079.  
  2080. All commands defined by a .CDF file are protected via password.
  2081. Each command has a separate password (there is a separate .CDF
  2082. file for each command).  For the user to be able to invoke a
  2083. command defined via a .CDF file, he must specify in his message a
  2084. password before the attempting to invoke a command.  For example
  2085. the incomming message should look like:
  2086.  
  2087.       ...
  2088.      password fooBarGorp
  2089.      do_what_i_mean_now
  2090.       ...
  2091.  
  2092. The password specified by the user is compared to the password
  2093. specified in the .CDF file for the "do_what_i_mean_now" command.
  2094. This comparison is CASE SENSITIVE!
  2095.  
  2096. If the comparison is not equal, the command is not executed.
  2097.  
  2098. Note: Take care in selecting passwords. Make them long and
  2099. obscure, especially for commands you define that update or delete
  2100. files. Change passwords often. Don't come hollering at me if your
  2101. system is compromised. I just provided the facility, you do not
  2102. have to use it!
  2103.  
  2104.  
  2105.  
  2106.  
  2107. _________________________________________________________________
  2108.                Release 3.0
  2109.  
  2110.                             page -31-
  2111.  
  2112.  
  2113.  
  2114. b i r d s o n g
  2115.                      WFS User Guide and Reference
  2116.  
  2117.                      Configuring WFS Features
  2118. _________________________________________________________________
  2119.  
  2120.  
  2121.  
  2122. Note: should you define your own commands, make sure your users
  2123. have appropriate HELP facilities to remind them to specify
  2124. passwords before invoking the commands.
  2125.  
  2126. 5.4.1.4  UserOperands
  2127.  
  2128. The UserOperands statement takes a boolean operator. Its default
  2129. is NO.
  2130.  
  2131. When the UserOperands value is FALSE, the command defined by the
  2132. command statement is executed exactly "as is". Any operands
  2133. specified by the user are stripped. For example, if the user
  2134. said:
  2135.  
  2136.      ...
  2137.      do_what_i_mean_now dog gone you, I said right now!
  2138.  
  2139. then the nothing beyond the "do_what_i_mean_now" is appended to
  2140. "command" when it is invoked.
  2141.  
  2142. If the UserOperands value is TRUE, then the operands are appended
  2143. to the "command". Using the example where the
  2144. "do_what_i_mean_now" user command is associated with the "DIR"
  2145. command via the command statement, then the command line would
  2146. be:
  2147.  
  2148.      ...
  2149.      dir dog gone you, I said right now!
  2150.  
  2151. Commands longer than 127 characters are not executed.
  2152.  
  2153. 5.4.1.5  MailResults
  2154.  
  2155. The MailResults statement takes a boolean operator. Its default
  2156. is NO.
  2157.  
  2158. When the MailResults value is FALSE, the "stdout" generated by
  2159. the command is not included in the message transcript.
  2160.  
  2161. When the MailResults value is TRUE, the "stdout" generated by the
  2162. command is included in the message transcript.
  2163.  
  2164. 5.4.1.6  RecordResults
  2165.  
  2166. The RecordResults statement takes a boolean operator. Its default
  2167. is NO.
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173. _________________________________________________________________
  2174.                Release 3.0
  2175.  
  2176.                             page -32-
  2177.  
  2178.  
  2179.  
  2180. b i r d s o n g
  2181.                      WFS User Guide and Reference
  2182.  
  2183.                      Configuring WFS Features
  2184. _________________________________________________________________
  2185.  
  2186.  
  2187.  
  2188. When the RecordResults value is FALSE, the "stdout" generated by
  2189. the command is not written to the WFSLOG file.
  2190.  
  2191. When the RecordResults value is TRUE, the "stdout" generated by
  2192. the command is written to the WFSLOG file.
  2193.  
  2194. Take care when using this. You can quickly fill up a hard disk
  2195. with command output. On the other hand, you may need it.
  2196. TAANSTAFL.
  2197.  
  2198.  
  2199. 5.5  Mailing Lists
  2200.  
  2201. 5.5.1  About Mailing Lists
  2202.  
  2203. WFS supports three (3) different types of mailing lists.
  2204.  
  2205. o   Open
  2206.  
  2207. o   One Way
  2208.  
  2209. o   Digest
  2210.  
  2211. Each type of mailing list serves a different purpose.
  2212.  
  2213. 5.5.1.1  Open Mailing Lists
  2214.  
  2215. An "Open" mailing list permits anyone to post to the list (see
  2216. the MembersOnly statement in "The Mailing List Configuration
  2217. File" for limitations).
  2218.  
  2219. Members may send mail to the mailing list's address. The mail is
  2220. recieved by WFS, then forwarded to all members of the mailing
  2221. list.
  2222.  
  2223. 5.5.1.2  One Way Mailing Lists
  2224.  
  2225. A "One Way" mailing list can be thought of as a Moderated mailing
  2226. list. That is: Only the list's moderator can post to the list.
  2227. WFS implements One Way mailing lists via "Security by Obscurity".
  2228. The posting address for the mailing list is intentionally hidden
  2229. from regular mailing list members.
  2230.  
  2231. The 'ReplyTo' statement in the mailing list configuration file
  2232. obscures the posting address.
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239. _________________________________________________________________
  2240.                Release 3.0
  2241.  
  2242.                             page -33-
  2243.  
  2244.  
  2245.  
  2246. b i r d s o n g
  2247.                      WFS User Guide and Reference
  2248.  
  2249.                      Configuring WFS Features
  2250. _________________________________________________________________
  2251.  
  2252.  
  2253.  
  2254. 5.5.1.3  Digest Mailing Lists
  2255.  
  2256. A "Digest" mailing list is the combination of a number of
  2257. individual posts to a mailing list. A Digest has a specific
  2258. format, as described in RFC1153; WFS's Digests conform to
  2259. RFC1153. A copy of RFC1153 is included with the WFS .ZIP file.
  2260.  
  2261. A digest mailing list requires a bit more administration than do
  2262. the other types of mailing lists. If you plan to set up a digest
  2263. mailing list, please read this topic carefully. This topic
  2264. describes the workings of a digest mailing list.
  2265.  
  2266. Mail addressed to a digest mailing list is accumulated in the
  2267. USER directory associated with that mailing list. The individual
  2268. articles are not queued for forwarding to the list's members.
  2269.  
  2270. When the list is "Digested", the articles are combined into a
  2271. single file, the digest file, in the RFC1153 format; the digest
  2272. file is mailed to the list's members. When the digest file is
  2273. mailed to the list's members, the individual articles are
  2274. deleted.
  2275.  
  2276. To cause the digest to be created and mailed to the list's
  2277. members a "DIGEST" command must be sent to the WFSREQST program.
  2278. The DIGEST command requires a password preceeding it in the
  2279. command stream.
  2280.  
  2281. To cause the DIGEST command to be sent to WFSREQST, construct a
  2282. .BAT file similar to the example below. You may run the .BAT file
  2283. either from RUN.BAT or via the SCHEDULE file.
  2284.  
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305. _________________________________________________________________
  2306.                Release 3.0
  2307.  
  2308.                             page -34-
  2309.  
  2310.  
  2311.  
  2312. b i r d s o n g
  2313.                      WFS User Guide and Reference
  2314.  
  2315.                      Configuring WFS Features
  2316. _________________________________________________________________
  2317.  
  2318.  
  2319.  
  2320.      @echo on
  2321.      :
  2322.      :    Send the digest command for the "dig-list" digest
  2323.      :
  2324.      : ---------------------
  2325.      :
  2326.      :    Construct DIGEST command message in a temporary file
  2327.      :
  2328.      echo To: server
  2329.      echo From: system >>$$tmp
  2330.      echo Subject: Digest Release >>$$tmp
  2331.      echo.>>$$tmp
  2332.      :
  2333.      echo password ThePassword>>$$tmp
  2334.      echo digest dig-list>>$$tmp
  2335.      echo quit>>$$tmp
  2336.      : ---------------------
  2337.      :
  2338.      :    Send the just created message to WFSREQST
  2339.      :
  2340.      w:\bin\wfsreqst <$$tmp
  2341.      : ---------------------
  2342.      :
  2343.      :    Delete the temporary file.
  2344.      :
  2345.      del $$tmp
  2346.  
  2347. Digest files have filenames of the form: "VxxxNyyy", where 'xxx'
  2348. is the digest's "Volume Number" and 'yyy' is the digest's "Issue
  2349. Number". WFS uses existing digest files to determine what the
  2350. filename for the next digest file will be.
  2351.  
  2352. The volume number portion will be the same volume number as the
  2353. highest volume number as that of any existing digest file. The
  2354. issue number will be one greater than the highest issue number of
  2355. any existing digest file.
  2356.  
  2357. For example: if files V001N001 thru V001N033 exist in the
  2358. digest's USER directory, then the next digest file will have
  2359. filename V001N034.
  2360.  
  2361. To increment the digest's volume number, create a file in the
  2362. digest's USER directory named V002N000. The next digest file
  2363. created will be V002N001, thus beginning a new digest "Volume".
  2364. You, the SysOp or list manager, may determine when it is
  2365. appropriate to increment the digest's volume number. See RFC1153
  2366. for hints.
  2367.  
  2368.  
  2369.  
  2370.  
  2371. _________________________________________________________________
  2372.                Release 3.0
  2373.  
  2374.                             page -35-
  2375.  
  2376.  
  2377.  
  2378. b i r d s o n g
  2379.                      WFS User Guide and Reference
  2380.  
  2381.                      Configuring WFS Features
  2382. _________________________________________________________________
  2383.  
  2384.  
  2385.  
  2386. A word of caution! Consider what happens when digest files
  2387. V001N033 and V002N000 both exist in the digest's user directory:
  2388. The next digest filename will be V002N034! I doubt that this is
  2389. what you had in mind. Therefore, when you increment the volume
  2390. number of a digest, remove or rename all digest files for the
  2391. previous volume!
  2392.  
  2393. If there's suffecient interest in digest mailing lists, I'll
  2394. consider making volume/issue incrementing feature work as
  2395. intuition would suggest it should in the next release. If you are
  2396. interested, write me.
  2397.  
  2398. 5.5.2  Configuring Mailing Lists
  2399.  
  2400. Configuring the Mailing List Server requires a few steps.
  2401.  
  2402. 1.  A directory in Waffle's USER directory tree is required for
  2403.     each mailing list. You will also create a regular Waffle
  2404.     UserID, using Waffle's ADMIN command, for each mailing list;
  2405.     this aids a mailing list administrator in managing the
  2406.     mailing list's files.
  2407.  
  2408. 2.  Waffle's STATIC file requires a "wfs.maillist" statement for
  2409.     each mailing list. See "wfs.maillist" on page 55.
  2410.  
  2411.     You may configure multiple mailing lists. Each mailing list
  2412.     requires a "wfs.maillist" statement in the STATIC file.
  2413.  
  2414. 3.  Add an entry in Waffle's ALIASES file for each mailing list.
  2415.     This is also described in "wfs.maillist". See the ALIASES.SMP
  2416.     file.
  2417.  
  2418.     The alias assigned to the mailing list should be different
  2419.     from the UserID associated with the mailing list. This
  2420.     prevents a bounced message from being propogated to all
  2421.     members of the mailing list should one of the mailing list's
  2422.     members become unreachable.
  2423.  
  2424. 4.  Create the MAILLIST.CFG file for each mailing list in the
  2425.     USER directory for that mailing list. The format of the
  2426.     MAILLIST.CFG file is described in "The Mailing List
  2427.     Configuration File".
  2428.  
  2429.     Sample files: MLOPEN.SMP, MLONEWAY.SMP, and MLDIGEST.SMP are
  2430.     sample mail list configuration files demonstrating the
  2431.     different types of mailing list configurations.
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437. _________________________________________________________________
  2438.                Release 3.0
  2439.  
  2440.                             page -36-
  2441.  
  2442.  
  2443.  
  2444. b i r d s o n g
  2445.                      WFS User Guide and Reference
  2446.  
  2447.                      Configuring WFS Features
  2448. _________________________________________________________________
  2449.  
  2450.  
  2451.  
  2452. 5.5.3  The Mailing List Configuration File
  2453.  
  2454. The MAILLIST.CFG file has the same syntax as Waffle's STATIC
  2455. file: a keyword, optional whitespace, a colon (':') character,
  2456. optional whitespace, and one or more operands. For example:
  2457.  
  2458.      keyword : operand
  2459.  
  2460. The following keywords are defined for a MAILLIST.CFG file. Note
  2461. that some combinations of configuration controls make no sense,
  2462. e.g. "Archive" and "Digest". WFS does not meticulously test for
  2463. combinations of configuration controls that do not work [or work
  2464. well] together. Use your good judgement configuring your mailing
  2465. lists. I have not tested all possible combinations; there are
  2466. just too many possible combinations for a "one person development
  2467. shop" to test.
  2468.  
  2469. 5.5.3.1  FileIdent
  2470.  
  2471. Code the "FileIdent" statement exactly as shown:
  2472.  
  2473.      FileIdent    :  MailList2
  2474.  
  2475. WFS uses this statement to verify that it has the correct file.
  2476.  
  2477. 5.5.3.2  ListName
  2478.  
  2479. ListName is a string; a short description of the mailing list.
  2480. For example:
  2481.  
  2482.      ListName  :  A Test Mailing List as a Demonstration
  2483.  
  2484.  
  2485. 5.5.3.3  Welcome
  2486.  
  2487. Welcome names a file, within the same directory, that will be
  2488. mailed to all new members for this list. For example:
  2489.  
  2490.      Welcome  :  welcome.msg
  2491.  
  2492. The welcome file is optional, but suggested.
  2493.  
  2494. Use the file defined in the "Welcome" statement to describe
  2495. List's purpose and charter. Also, include instructions for
  2496. unsubscribing to the list.
  2497.  
  2498.  
  2499.  
  2500.  
  2501.  
  2502.  
  2503. _________________________________________________________________
  2504.                Release 3.0
  2505.  
  2506.                             page -37-
  2507.  
  2508.  
  2509.  
  2510. b i r d s o n g
  2511.                      WFS User Guide and Reference
  2512.  
  2513.                      Configuring WFS Features
  2514. _________________________________________________________________
  2515.  
  2516.  
  2517.  
  2518. 5.5.3.4  MemberFile
  2519.  
  2520. MemberFile names a file, within the same directory, that contains
  2521. the membership list. For example:
  2522.  
  2523.      MemberFile  :  members.mbr
  2524.  
  2525. The JOIN and UNJOIN user commands manipulate this file. The
  2526. MEMBERS user command causes WFS to mail this file to the
  2527. requestor.
  2528.  
  2529. The format of the MemberFile is simple:
  2530.  
  2531. o   An email address per line.
  2532.  
  2533. o   Each address begins in column one.
  2534.  
  2535. o   No extraneous text on the line.
  2536.  
  2537. o   Lines beginning with the hash character ('#') are not
  2538.     processed.
  2539.  
  2540. o   Blank lines are ignored.
  2541.  
  2542. Note that the UNJOIN command replaces the first character of an
  2543. entry with a hash character.
  2544.  
  2545. The JOIN command appends new members to the end of the
  2546. MemberFile. After a while, you may have to manually edit this
  2547. file to remove former members: i.e. those entries having the hash
  2548. character at the beginning of the statement.
  2549.  
  2550. You do not have to create this file. WFS will create it the first
  2551. time it processes a JOIN or ADDMEMBER command.
  2552.  
  2553. 5.5.3.5  ReplyTo
  2554.  
  2555. The ReplyTo statement is optional in the mailing list
  2556. configuration file. The operand of the ReplyTo statement is a
  2557. string. The operand specifies the email address for the "Reply-
  2558. To:" mail header when the server forwards mail to the mailing
  2559. list's members. For example:
  2560.  
  2561.      ReplyTo : SomeUserID@Some.Site
  2562.  
  2563. If ReplyTo is not specified, the generated Reply-To: header has
  2564. the form:
  2565.  
  2566.  
  2567.  
  2568.  
  2569. _________________________________________________________________
  2570.                Release 3.0
  2571.  
  2572.                             page -38-
  2573.  
  2574.  
  2575.  
  2576. b i r d s o n g
  2577.                      WFS User Guide and Reference
  2578.  
  2579.                      Configuring WFS Features
  2580. _________________________________________________________________
  2581.  
  2582.  
  2583.  
  2584.      Reply-To: Mailing-List-Name@Node
  2585.  
  2586. Where 'Mailing-List-Name' is the mail address of the mailing
  2587. list; 'Node' is the operand of the "Node" statement in Waffle's
  2588. STATIC file.
  2589.  
  2590. Use the ReplyTo statement to create a "OneWay" mailing list, or
  2591. to otherwise direct replies to mail sent by the mailing list.
  2592.  
  2593. Note: The "Reply-To:" address, whether specified or generated is
  2594. also the address WFS uses in the "To:" header. Messages are sent
  2595. to the list's members, the "To:" header is the "Reply-To:"
  2596. address. Why? Unix mailers provide two flavors of a REPLY
  2597. command: an 'r' (that's lower case 'r') reply command causes the
  2598. reply to go to the address named on the "From:" mail header, or
  2599. the "Reply-To:" header if no "From:" header exists. An 'R'
  2600. (that's upper case 'R') reply command causes the reply to go to
  2601. all addresses found on both the "To:" and the "From:" (or
  2602. "Reply-To:") header. Waffle treats all replies, case insensitive,
  2603. the same: replies go to either the address specified on the
  2604. 'From:' header statement or the 'Reply-To:' header statement, if
  2605. no 'From:' exists.
  2606.  
  2607. So why's this improtant? See the topic "ReplyStyle"; it follows.
  2608.  
  2609. 5.5.3.6  ReplyStyle
  2610.  
  2611. The ReplyTo statement is optional in the mailing list
  2612. configuration file. The ReplyStyle statement modifies the
  2613. behavior of the ReplyTo statement. The operand of the ReplyStyle
  2614. statement is a word. Specify the ReplyStyle as:
  2615.  
  2616.      ReplyStyle : [replyto | originator]
  2617.  
  2618. If ReplyStyle is not specified, the default value is 'replyto'.
  2619.  
  2620. When ReplyStyle is 'replyto' Reply-To: mail headers are generated
  2621. as described in ReplyTo. See above.
  2622.  
  2623. When ReplyStyle is 'originator', no Reply-To: statement is
  2624. generated when the mail is sent to the list's members. The From:
  2625. mail header contains the operand of the originator's From: or
  2626. Reply-To: header.
  2627.  
  2628. Use 'ReplyStyle:replyto' without specifying a 'ReplyTo'
  2629. MAILLIST.CFG statement to cause *ALL* replies to mailing list
  2630. messages to cause replies to go to the mailing list. Some mailing
  2631.  
  2632.  
  2633.  
  2634.  
  2635. _________________________________________________________________
  2636.                Release 3.0
  2637.  
  2638.                             page -39-
  2639.  
  2640.  
  2641.  
  2642. b i r d s o n g
  2643.                      WFS User Guide and Reference
  2644.  
  2645.                      Configuring WFS Features
  2646. _________________________________________________________________
  2647.  
  2648.  
  2649.  
  2650. list managers prefer the higher volume of traffic generated by
  2651. this style.
  2652.  
  2653. Use 'ReplyStyle:replyto' with a 'ReplyTo' MAILLIST.CFG statement
  2654. to cause replies to mailing list messages to go to a specific
  2655. email address. This technique is used for OneWay mailing lists.
  2656.  
  2657. Use 'ReplyStyle:originator' to cause replies, small 'r' by Unix
  2658. mailers, to go to the originator of the mail and replies, large
  2659. 'R' by Unix mailers, to go to the mailing list and the
  2660. originator. This technique closely approximates the way many unix
  2661. mailing lists look. Wafflers may not like the style because they
  2662. cannot reply to mail from the mailing list and have the reply go
  2663. to the mailing list.
  2664.  
  2665. 5.5.3.7  MultiAddress
  2666.  
  2667. MultiAddress causes WFSSENDF to invoke the RMAIL program with
  2668. multiple addressees on the command line. This minimizes the
  2669. number of spool files created, hence reduces the number of files
  2670. sent to the smarthost.
  2671.  
  2672. The operand of the MultiAddress statment is a boolean name. Any
  2673. of "Yes", "True", "1" may be used for enable this feature, You
  2674. may code any of "No", "False", "0" to disable this feature. It's
  2675. case insensitive. When it is not specified, it defaults to
  2676. "False". For example, to enable the feature:
  2677.  
  2678.      MultiAddress  :  yes
  2679.  
  2680. Some mailers have problems with mail prepared this way. See the
  2681. RMAIL.DOC in the Waffle documentation. WFS respects the rr.len
  2682. STATIC file statement, if present, otherwise WFS uses the defined
  2683. default of 100.
  2684.  
  2685. If you have trouble using MultiAddress, disable it.
  2686.  
  2687. 5.5.3.8  MembersOnly
  2688.  
  2689. MembersOnly causes WFSREQST to check the membership file before
  2690. adding the message to the message archive and causing it to be
  2691. sent to all of the mailing list's members.
  2692.  
  2693. If not specified, the default is "No"; anyone, member or not may
  2694. post to the list.
  2695.  
  2696. Specify MembersOnly as a boolean term. For example:
  2697.  
  2698.  
  2699.  
  2700.  
  2701. _________________________________________________________________
  2702.                Release 3.0
  2703.  
  2704.                             page -40-
  2705.  
  2706.  
  2707.  
  2708. b i r d s o n g
  2709.                      WFS User Guide and Reference
  2710.  
  2711.                      Configuring WFS Features
  2712. _________________________________________________________________
  2713.  
  2714.  
  2715.  
  2716.      MembersOnly  :  yes
  2717.  
  2718.  
  2719. 5.5.3.9  NoEcho
  2720.  
  2721. NoEcho determines whether a message will be sent to the
  2722. originator of the message. When TRUE, messages sent to the
  2723. mailing list will not be echoed to the originator of the message.
  2724.  
  2725. If not specified, the default is "No"; the post will be sent to
  2726. the originator of the message.
  2727.  
  2728. Specify NoEcho as a boolean term. For example:
  2729.  
  2730.      NoEcho  :    True
  2731.  
  2732.  
  2733. 5.5.3.10  AutoDelete
  2734.  
  2735. AutoDelete causes WFSSENDF to delete the current minus one
  2736. Article in the mailing list after mailing the current article to
  2737. mailing list members. This feature keeps the archive of articles
  2738. at exactly one article. The feature is provided for SysOps or
  2739. mailing list owners who do not want expire articles using other
  2740. techniques.
  2741.  
  2742. If not specified, the default is "No"; Articles will not be
  2743. automatically deleted from the Archive.
  2744.  
  2745. Specify AutoDelete as a boolean term. For example:
  2746.  
  2747.      AutoDelete  :  True
  2748.  
  2749. Be careful if you use this feature not to manually mess with the
  2750. work queue: do not add, delete or modify work queue files without
  2751. understanding the implications of the AutoDelete feature. The
  2752. results may be unpredictable.
  2753.  
  2754. 5.5.3.11  Password
  2755.  
  2756. Password assigns a password for the mailing list. The password is
  2757. required for the ADDMEMBER and DROPMEMBER user commands. Specify
  2758. Password as a string. For example:
  2759.  
  2760.      Password  :  ThePassword
  2761.  
  2762. Note: password comparisons are case sensitive.
  2763.  
  2764.  
  2765.  
  2766.  
  2767. _________________________________________________________________
  2768.                Release 3.0
  2769.  
  2770.                             page -41-
  2771.  
  2772.  
  2773.  
  2774. b i r d s o n g
  2775.                      WFS User Guide and Reference
  2776.  
  2777.                      Configuring WFS Features
  2778. _________________________________________________________________
  2779.  
  2780.  
  2781.  
  2782. 5.5.3.12  Digest
  2783.  
  2784. Digest defines this mailing list as a Digest form mailing list.
  2785.  
  2786. Specify the operand of Digest as a boolean term. For example:
  2787.  
  2788.      Digest : yes
  2789.  
  2790. The default setting for Digest is "FALSE".
  2791.  
  2792. When Digest is true, articles mailed to the mailing list are not
  2793. individually forwarded to members of the mailing list. The
  2794. article is saved in the mailing list's USER directory until a
  2795. DIGEST command is processed by WFSREQST; when WFSSENDF processes
  2796. the queued DIGEST command, accumulated articles will be Digested
  2797. and mailed to members of the mailing list.
  2798.  
  2799. After the digest is made and mailed, the individual articles are
  2800. deleted.
  2801.  
  2802. The DIGEST command requires a valid password in the command
  2803. stream preceeding the DIGEST command.
  2804.  
  2805. 5.5.3.13  DigestMinArticles
  2806.  
  2807. DigestMinArticles is used for Digest mailing lists only; when
  2808. specified, it determines the minimum number of articles that must
  2809. be present for a Digest of articles to be constructed and mailed.
  2810.  
  2811. Specify the operand of DigestMinArticles as an unsigned integer.
  2812. For example:
  2813.  
  2814.      DigestMinArticles : 2
  2815.  
  2816. The default setting for DigestMinArticles is 2.
  2817.  
  2818. For an example, consider the following circumstance: Suppose you
  2819. have set DigestMinArticles to 4. Suppose there are 3 articles
  2820. waiting to be Digested and sent. Suppose your cron job submits
  2821. the "DIGEST" command.
  2822.  
  2823. WFSSENDF will see that there are only 3 articles to be Digested
  2824. and will NOT perform the digest operation.
  2825.  
  2826. Now suppose there were 6 articles waiting to be Digested and
  2827. sent. Suppose your cron job submits the "DIGEST" command.
  2828.  
  2829.  
  2830.  
  2831.  
  2832.  
  2833. _________________________________________________________________
  2834.                Release 3.0
  2835.  
  2836.                             page -42-
  2837.  
  2838.  
  2839.  
  2840. b i r d s o n g
  2841.                      WFS User Guide and Reference
  2842.  
  2843.                      Configuring WFS Features
  2844. _________________________________________________________________
  2845.  
  2846.  
  2847.  
  2848. WFSSENDF will digest all waiting articles and mail the digest to
  2849. the list's members.
  2850.  
  2851. 5.5.3.14  DigestSize
  2852.  
  2853. DigestSize specifies the maximum size of a digest mailing, in
  2854. bytes.
  2855.  
  2856. Specify the operand of DigestSize as an unsigned integer. For
  2857. example:
  2858.  
  2859.      DigestSize : 25000
  2860.  
  2861. The default setting for DigestSize is 20000.
  2862.  
  2863. Complete articles are Digested until the accumulated digest
  2864. exceeds DigestSize bytes. The then assembled digest is then
  2865. mailed to members and an new issue of the digest is begun.
  2866.  
  2867. Note that the actual size of the mailed digest can exceed
  2868. DigestSize. The Digest will contain whole articles; articles will
  2869. not be split across digests.
  2870.  
  2871. 5.5.3.15  Join
  2872.  
  2873. Join enables or disables the Join user command for this mailing
  2874. list. By default, the Join command is enabled if the STATIC file
  2875. statement "wfs.enable.join" has been specified.
  2876.  
  2877. Specify the Join statement as a boolean term. For example, to
  2878. disable the Join command for this mailing list, specify the Join
  2879. statement as:
  2880.  
  2881.      Join : No
  2882.  
  2883.  
  2884. 5.5.3.16  UnJoin
  2885.  
  2886. UnJoin enables or disables the UnJoin user command for this
  2887. mailing list. By default, the UnJoin command is enabled if the
  2888. STATIC file statement "wfs.enable.unjoin" has been specified.
  2889.  
  2890. Specify the UnJoin statement as a boolean term. For example, to
  2891. disable the UnJoin command for this mailing list, specify the
  2892. UnJoin statement as:
  2893.  
  2894.      UnJoin : No
  2895.  
  2896.  
  2897.  
  2898.  
  2899. _________________________________________________________________
  2900.                Release 3.0
  2901.  
  2902.                             page -43-
  2903.  
  2904.  
  2905.  
  2906. b i r d s o n g
  2907.                      WFS User Guide and Reference
  2908.  
  2909.                      Configuring WFS Features
  2910. _________________________________________________________________
  2911.  
  2912.  
  2913.  
  2914. 5.5.3.17  Archive
  2915.  
  2916. Archive enables or disables the Archive user command for this
  2917. mailing list. By default, the Archive command is enabled if the
  2918. STATIC file statement "wfs.enable.archive" has been specified.
  2919.  
  2920. Specify the Archive statement as a boolean term. For example, to
  2921. disable the Archive command for this mailing list, specify the
  2922. Archive statement as:
  2923.  
  2924.      Archive : No
  2925.  
  2926.  
  2927. 5.5.3.18  Members
  2928.  
  2929. Members enables or disables the Members user command for this
  2930. mailing list. By default, the Members command is enabled if the
  2931. STATIC file statement "wfs.enable.members" has been specified.
  2932.  
  2933. Specify the Members statement as a boolean term. For example, to
  2934. disable the Members command for this mailing list, specify the
  2935. Members statement as:
  2936.  
  2937.      Members : No
  2938.  
  2939.  
  2940. 5.5.3.19  AddMember
  2941.  
  2942. AddMember enables or disables the ADDMEMBER command for this
  2943. mailing list. By default, the ADDMEMBER command is enabled if the
  2944. STATIC file statement "wfs.enable.addmember" has been specified.
  2945.  
  2946. Specify the AddMember statement as a boolean term. For example,
  2947. to disable the ADDMEMBER command for this mailing list, specify
  2948. the AddMember statement as:
  2949.  
  2950.      AddMember : No
  2951.  
  2952.  
  2953. 5.5.3.20  DropMember
  2954.  
  2955. DropMember enables or disables the DROPMEMBER command for this
  2956. mailing list. By default, the DROPMEMBER command is enabled if
  2957. the STATIC file statement "wfs.enable.dropmember" has been
  2958. specified.
  2959.  
  2960.  
  2961.  
  2962.  
  2963.  
  2964.  
  2965. _________________________________________________________________
  2966.                Release 3.0
  2967.  
  2968.                             page -44-
  2969.  
  2970.  
  2971.  
  2972. b i r d s o n g
  2973.                      WFS User Guide and Reference
  2974.  
  2975.                      Configuring WFS Features
  2976. _________________________________________________________________
  2977.  
  2978.  
  2979.  
  2980. Specify the DropMember statement as a boolean term. For example
  2981. to disable the DROPMEMBER command for this mailing list, specify
  2982. the DropMember statement as:
  2983.  
  2984.      DropMember : No
  2985.  
  2986.  
  2987.  
  2988.  
  2989.  
  2990.  
  2991.  
  2992.  
  2993.  
  2994.  
  2995.  
  2996.  
  2997.  
  2998.  
  2999.  
  3000.  
  3001.  
  3002.  
  3003.  
  3004.  
  3005.  
  3006.  
  3007.  
  3008.  
  3009.  
  3010.  
  3011.  
  3012.  
  3013.  
  3014.  
  3015.  
  3016.  
  3017.  
  3018.  
  3019.  
  3020.  
  3021.  
  3022.  
  3023.  
  3024.  
  3025.  
  3026.  
  3027.  
  3028.  
  3029.  
  3030.  
  3031. _________________________________________________________________
  3032.                Release 3.0
  3033.  
  3034.                             page -45-
  3035.  
  3036.  
  3037.  
  3038. b i r d s o n g
  3039.                      WFS User Guide and Reference
  3040.  
  3041.                             Reference
  3042. _________________________________________________________________
  3043.  
  3044.  
  3045.  
  3046.  
  3047.  
  3048.  
  3049.                 Chapter 6
  3050.  
  3051.                 Reference
  3052.  
  3053.  
  3054. 6.1  Waffle's Static File
  3055.  
  3056. WFS depends on statements declared in the Waffle STATIC file.
  3057. These are Waffle's. Normally you will have no need to change the
  3058. settings of these statements.
  3059.  
  3060. WFS also requires his own statements in the STATIC file. WFS's
  3061. STATIC file statements conform to the same general syntactic
  3062. rules as the Waffle statements. You will configure the following
  3063. WFS STATIC file statements:
  3064.  
  3065.      wfs.sender
  3066.      wfs.reply-to
  3067.      wfs.uuencode
  3068.      wfs.uuencode.ext
  3069.      wfs.uuencode.lines
  3070.      wfs.ascii.size
  3071.      wfs.ascii.lines
  3072.      wfs.help
  3073.      wfs.filelist
  3074.      wfs.transcript
  3075.      wfs.notrans
  3076.      wfs.signature
  3077.      wfs.errorlimit
  3078.      wfs.msglimit
  3079.      wfs.daylimit
  3080.      wfs.quelimit
  3081.      wfs.enable.*
  3082.      wfs.deny
  3083.      wfs.authexit
  3084.      wfs.automail
  3085.      wfs.automail.immediate
  3086.      wfs.command
  3087.      wfs.maillist
  3088.  
  3089. The file "STATIC.smp", contains sample specifications for all the
  3090. WFS STATIC file statements. Use this file as a base for
  3091. customizing WFS at your site. Append the file into your normal
  3092. waffle STATIC file, then modify the statements to suit your site.
  3093.  
  3094.  
  3095.  
  3096.  
  3097. _________________________________________________________________
  3098.                Release 3.0
  3099.  
  3100.                             page -46-
  3101.  
  3102.  
  3103.  
  3104. b i r d s o n g
  3105.                      WFS User Guide and Reference
  3106.  
  3107.                             Reference
  3108. _________________________________________________________________
  3109.  
  3110.  
  3111.  
  3112. 6.1.1  Temporary
  3113.  
  3114. WFS uses the directory named by the Waffle temporary statement as
  3115. a place to construct the session transcript when he processes a
  3116. user request. This file is usually small; WFS deletes it after he
  3117. mails it to the requestor.
  3118.  
  3119. WFS uses the temporary directory as a workarea to uuencode files
  3120. that are to be mailed uuencoded. The drive containing this
  3121. directory must have enough space to contain all the parts of the
  3122. uuencoded file. The file to be uuencoded is not copied to this
  3123. directory before it is uuencoded. WFS deletes the uuencode parts
  3124. after mailing them to the requestor.
  3125.  
  3126. 6.1.2  Bin
  3127.  
  3128. WFS invokes RMAIL.EXE using the "bin" STATIC statement as the
  3129. pathname to the executable.
  3130.  
  3131. 6.1.3  Waffle
  3132.  
  3133. WFS uses the "Waffle" STATIC file statement to locate the ADMIN
  3134. directory. WFS places the WFSLOG file in the ADMIN directory.
  3135. WFSLOG contains a log of all incoming and outgoing requests,
  3136. information and error messages.
  3137.  
  3138. WFS uses the "Waffle" STATIC file statement to locate the DIRS
  3139. file.
  3140.  
  3141. 6.1.4  Node
  3142.  
  3143. WFS uses the "node" STATIC file statement to construct the mail
  3144. header for both the session transcript and the mailed files.
  3145.  
  3146. 6.1.5  Uucpname
  3147.  
  3148. WFS uses the "uucpname" STATIC file statement to construct the
  3149. mail header for both the session transcript and the mailed files.
  3150.  
  3151. 6.1.6  wfs.sender
  3152.  
  3153. WFS uses the wfs.sender STATIC file statement to identify the
  3154. user ID that responds to mailed requests. It is important to
  3155. specify a different user ID from the user ID specified in the
  3156. aliases file as the receiver of mailed requests. The different
  3157. specification prevents bounce loops.
  3158.  
  3159.  
  3160.  
  3161.  
  3162.  
  3163. _________________________________________________________________
  3164.                Release 3.0
  3165.  
  3166.                             page -47-
  3167.  
  3168.  
  3169.  
  3170. b i r d s o n g
  3171.                      WFS User Guide and Reference
  3172.  
  3173.                             Reference
  3174. _________________________________________________________________
  3175.  
  3176.  
  3177.  
  3178. For example, the request processor specified in the aliases file
  3179. could be "file-request" and the wfs.sender STATIC file statement
  3180. could be "fileserv".
  3181.  
  3182. WFS forms a directory path to the user directory wfs.sender. WFS
  3183. places files named "QDxxxxxx" (where: xxxxxx is a decimal number;
  3184. for example: QD000233) in this directory. Each queue file
  3185. represents a request for a single file.
  3186.  
  3187. The file QCONTROL is also placed in this directory. QCONTROL
  3188. contains data used by WFS's rate limiting features.
  3189.  
  3190. 6.1.7  wfs.reply-to
  3191.  
  3192. WFS uses the wfs.reply-to STATIC file statement to construct the
  3193. mail header for both the session transcript and for mailed files.
  3194. WFS emits a "Reply-to:" line in the mail header using the data
  3195. specified by this statement. You must specify a fully qualified
  3196. path name, not just a user ID. This flexibility gives you the
  3197. ability to have a a reply go to a different site and ID than the
  3198. one serving as the file server.
  3199.  
  3200. For example:
  3201.  
  3202.      wfs.reply-to : Customer-Service@Foo.Bar.Com
  3203.  
  3204. The specification of this statement is optional.
  3205.  
  3206. 6.1.8  wfs.uuencode
  3207.  
  3208. WFS uses the wfs.uuencode STATIC file statement as the executable
  3209. name for the uuencode program. This should be the fully qualified
  3210. pathname of the uuencode program provided with the WFS
  3211. distribution. For example:
  3212.  
  3213.      wfs.uuencode : c:/util/uuencode
  3214.  
  3215. WFS uuencodes files at the time the file is mailed.
  3216.  
  3217. 6.1.9  wfs.uuencode.ext
  3218.  
  3219. The wfs.uuencode.ext STATIC file statement specifies a list of
  3220. file extensions that are always to be uuencoded by WFS for
  3221. sending these files.
  3222.  
  3223. For example, a reasonable specification for wfs.uuencode.ext
  3224. might be:
  3225.  
  3226.  
  3227.  
  3228.  
  3229. _________________________________________________________________
  3230.                Release 3.0
  3231.  
  3232.                             page -48-
  3233.  
  3234.  
  3235.  
  3236. b i r d s o n g
  3237.                      WFS User Guide and Reference
  3238.  
  3239.                             Reference
  3240. _________________________________________________________________
  3241.  
  3242.  
  3243.  
  3244.      wfs.uuencode.ext : com exe pak zip arc arj gif lzh lha
  3245.  
  3246. If you have a very long list of file extensions you want
  3247. uuencoded, you may have multiple wfs.uuencode.ext statements in
  3248. the STATIC file. Additional statements add to the list of file
  3249. extensions to be uuencoded for transmission.
  3250.  
  3251. To cause uuencoding of files with no file extension, specify
  3252. "NULL" on the wfs.uuencode.ext statement. For example:
  3253.  
  3254.      wfs.uuencode.ext : zip zoo pak lzh NULL
  3255.  
  3256. If a /GET command in the message has coded uuencode or xxencode
  3257. on a file request, the user's specification takes precedence.
  3258.  
  3259. 6.1.10    wfs.ascii.size
  3260.  
  3261. The wfs.ascii.size STATIC file statement specifies the number of
  3262. bytes an ascii file will be split into for mailing. Files larger
  3263. than this number will be split at the first new line character
  3264. following this number of bytes.
  3265.  
  3266.      wfs.ascii.size : 33000
  3267.  
  3268. 6.1.11    wfs.ascii.lines
  3269.  
  3270. The wfs.ascii.lines STATIC file statement specifies the number of
  3271. lines an ascii file will be split into for mailing. Files larger
  3272. than this number will be split at the first line following this
  3273. number of lines.
  3274.  
  3275.      wfs.asciilines : 475
  3276.  
  3277. 6.1.12    wfs.uuencode.lines
  3278.  
  3279. The wfs.uuencode.lines STATIC file statement specifies the number
  3280. of lines that uuencoded parts will be broken into.
  3281.  
  3282. This feature is provided because some mailers choke on files over
  3283. some arbitrary limit set by local system administrators.
  3284.  
  3285. The default number of lines for each part made by Richard Marks'
  3286. uuencode is 950 lines. This makes file parts about 60K. You may
  3287. have to experiment to get a file size that suits you.
  3288.  
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295. _________________________________________________________________
  3296.                Release 3.0
  3297.  
  3298.                             page -49-
  3299.  
  3300.  
  3301.  
  3302. b i r d s o n g
  3303.                      WFS User Guide and Reference
  3304.  
  3305.                             Reference
  3306. _________________________________________________________________
  3307.  
  3308.  
  3309.  
  3310. 6.1.13    wfs.help
  3311.  
  3312. WFS uses the wfs.help STATIC file statement to locate the file it
  3313. mails in response to the HELP command. Specify a fully qualified
  3314. pathname. For example:
  3315.  
  3316.      wfs.help : f:/waffle/user/fileserv/wfshelp.txt
  3317.  
  3318. 6.1.14    wfs.filelist
  3319.  
  3320. WFS uses the wfs.filelist STATIC file statement to locate the
  3321. file it mails in response to the /DIR command. Specify a fully
  3322. qualified pathname. For example:
  3323.  
  3324.      wfs.filelist : f:/public/filelist.txt
  3325.  
  3326. 6.1.15    wfs.transcript
  3327.  
  3328. WFS uses the wfs.transcript STATIC file statement to locate the
  3329. file with which it begins the session transcript. The
  3330. "transcript" file is pre-pended to the session transcript.
  3331. Specify a fully qualified pathname. For example:
  3332.  
  3333.      wfs.transcript : f:/waffle/user/fileserv/welcome.txt
  3334.  
  3335. 6.1.16    wfs.notrans
  3336.  
  3337. By default, a transcript of the session is mailed to the message
  3338. originator. The "wfs.notrans" statement can be used to suppress
  3339. the transcript. wfs.notrans may be specified with a boolean
  3340. operator; e.g. true, false, 1, 0, yes, no. When not specified,
  3341. wfs.notrans defaults to "FALSE". When set to "TRUE" the session
  3342. transcript is NOT mailed to the message originator. For example:
  3343.  
  3344.      wfs.notrans : true
  3345.  
  3346. If the requestor's message contains an error that causes the help
  3347. file to be included in the session transcript, the transcript is
  3348. mailed to the requestor, regardless of the wfs.notrans statement.
  3349.  
  3350. 6.1.17    wfs.signature
  3351.  
  3352. WFS uses the wfs.signature STATIC file statement to locate the
  3353. file with which it ends the session transcript. The "signature"
  3354. file is appended to the session transcript. Specify a fully
  3355. qualified pathname. For example:
  3356.  
  3357.      wfs.signature : f:/waffle/user/fileserv/signatur.txt
  3358.  
  3359.  
  3360.  
  3361. _________________________________________________________________
  3362.                Release 3.0
  3363.  
  3364.                             page -50-
  3365.  
  3366.  
  3367.  
  3368. b i r d s o n g
  3369.                      WFS User Guide and Reference
  3370.  
  3371.                             Reference
  3372. _________________________________________________________________
  3373.  
  3374.  
  3375.  
  3376. 6.1.18    wfs.errorlimit
  3377.  
  3378. wfs.errorlimit is the number of errors detected by WFSREQST in
  3379. the incomming message before he quits processing the message.
  3380. After wfs.errorlimit errors have been detected, the remainder of
  3381. the incomming message is flushed. For example:
  3382.  
  3383.      wfs.errorlimit : 5
  3384.  
  3385. 6.1.19    wfs.msglimit
  3386.  
  3387. The wfs.msglimit STATIC file statement specifies the number of
  3388. bytes of files that a mailed request may retrieve in a single
  3389. mail message. The specification is in thousands of bytes. For
  3390. example to limit a single mailed request to 600,000 bytes of
  3391. files, specify wfs.msglimit as:
  3392.  
  3393.      wfs.msglimit : 600
  3394.  
  3395. If you do not specify the wfs.msglimit statement, WFS sets a
  3396. default of 500,000 bytes.
  3397.  
  3398. WFS keeps track of the number of bytes represented by each file
  3399. named (or implied) in a command in body of a message. He queues
  3400. each request until the limit is exceeded. For example, with the
  3401. limit set to 500,000 bytes, if previous commands total 380,000
  3402. bytes and the next command specifies a file 300,000 bytes long,
  3403. the request will be accepted.
  3404.  
  3405. 6.1.20    wfs.daylimit
  3406.  
  3407. The wfs.daylimit STATIC file statement specifies the number bytes
  3408. of files that WFSSENDF will mail in response to queued requests
  3409. on a given date. The specification is in thousands of bytes. For
  3410. example: to limit the number of bytes mailed in response to
  3411. queued requests to 3 MBytes per day, specify the wfs.daylimit
  3412. statement as:
  3413.  
  3414.      wfs.daylimit : 3000
  3415.  
  3416. If you do not specify the wfs.daylimit statement, WFS sets a
  3417. default of ten (10) times the value of the wfs.msglimit
  3418. statement.
  3419.  
  3420. WFS keeps track (in the QCONTROL file) of the number of bytes it
  3421. has mailed in response to requests for a given date.
  3422.  
  3423.  
  3424.  
  3425.  
  3426.  
  3427. _________________________________________________________________
  3428.                Release 3.0
  3429.  
  3430.                             page -51-
  3431.  
  3432.  
  3433.  
  3434. b i r d s o n g
  3435.                      WFS User Guide and Reference
  3436.  
  3437.                             Reference
  3438. _________________________________________________________________
  3439.  
  3440.  
  3441.  
  3442. 6.1.21    wfs.quelimit
  3443.  
  3444. The wfs.quelimit STATIC file statement specifies the number of
  3445. bytes represented by requests that WFS will accept. The
  3446. specification is in thousands of bytes. For example, to limit the
  3447. total of queued requests to 20 MBytes, specify wfs.quelimit as:
  3448.  
  3449.      wfs.quelimit : 20000
  3450.  
  3451. If you do not specify the wfs.quelimit statement, WFS sets a
  3452. default of ten (10) times the value of the wfs.daylimit
  3453. statement.
  3454.  
  3455. When wfs.quelimit bytes of requests are already queued for
  3456. processing, and additional requests arrive, WFSREQST will reject
  3457. the request with an appropriate message.
  3458.  
  3459. 6.1.22    wfs.enable.*
  3460.  
  3461. The wfs.enable.* STATIC file statement specifies a list of names
  3462. for built-in commands. By default, no WFS commands are recognized
  3463. in an incomming message unless the command is enabled and
  3464. assigned a name. For example, to enable all commands using its
  3465. base name code the following in your STATIC file:
  3466.  
  3467.      wfs.enable.ping         : ping
  3468.      wfs.enable.cookie         : cookie
  3469.      wfs.enable.help         : help
  3470.      wfs.enable.get         : get
  3471.      wfs.enable.dir         : dir
  3472.      wfs.enable.newfiles     : newfiles
  3473.      wfs.enable.password     : password
  3474.      wfs.enable.join         : join
  3475.      wfs.enable.unjoin         : unjoin
  3476.      wfs.enable.archive      : archive
  3477.      wfs.enable.members      : members
  3478.      wfs.enable.addmember    : addmember
  3479.      wfs.enable.dropmember   : dropmember
  3480.      wfs.enable.digest         : digest
  3481.      wfs.enable.replyto      : replyto
  3482.  
  3483. You may assign any name you wish for the command; the name need
  3484. not be the same as the base name for the command. You may also
  3485. assign more than one name for a command. For example to enable
  3486. the help command and assign multiple names to it, none of them
  3487. "help", code the following in your STATIC file:
  3488.  
  3489.      wfs.enable.help : info information huh huh? what whazzat
  3490.  
  3491.  
  3492.  
  3493. _________________________________________________________________
  3494.                Release 3.0
  3495.  
  3496.                             page -52-
  3497.  
  3498.  
  3499.  
  3500. b i r d s o n g
  3501.                      WFS User Guide and Reference
  3502.  
  3503.                             Reference
  3504. _________________________________________________________________
  3505.  
  3506.  
  3507.  
  3508. Should you want many names for the command, you may have multiple
  3509. wfs.enable.* statements for the same command. Continuing the
  3510. previous example:
  3511.  
  3512.      wfs.enable.help : info information huh huh? what whazzat
  3513.      wfs.enable.help : ? ?? ??? ???? duh duh? how how?
  3514.  
  3515. 6.1.23    wfs.authexit
  3516.  
  3517. The wfs.authexit STATIC file statement specifies the fully
  3518. qualified pathname to a user supplied executable program. The
  3519. following example shows a specification for wfs.authexit.
  3520.  
  3521.      wfs.authexit : c:\waffle\bin\authexit
  3522.  
  3523. See "Configuring an Authorization Exit Program" for a discussion
  3524. of how to configure an authorization exit program.
  3525.  
  3526. Both wfs.deny and wfs.authexit may be active at the same time.
  3527.  
  3528. 6.1.24    wfs.automail
  3529.  
  3530. The wfs.automail STATIC file statement specifies a binding of a
  3531. user ID, aliased in Waffles ALIASES file to the WFSREQST program,
  3532. and a file to send when mail arrives at that address.
  3533.  
  3534. In addition to specifying wfs.automail in the STATIC file, a
  3535. statement must be placed in Waffle's ALIASES file to direct mail
  3536. to the WFSREQST program.
  3537.  
  3538. You may have as many different wfs.automail and ALIASES file
  3539. statements as you want, limited only be the available memory, and
  3540. Waffle's own limitations. Each pair (wfs.automail and alias) may
  3541. specify a different file to be sent.
  3542.  
  3543. There are two operands to the wfs.automail statement; syntax is:
  3544.  
  3545.      wfs.automail : <aliasname> <filespec>
  3546.  
  3547. Where:
  3548.  
  3549. o   <aliasname> is the alias statement in Waffle's ALIASES file,
  3550.  
  3551. o   <filespec> is the fully qualified file specification of the
  3552.     file to be sent when mail arrives at this alias.
  3553.  
  3554. For example, to configure both the aliases file and the STATIC
  3555. file to send the file "e\user\sendfile\wfsinfo.txt" to the sender
  3556.  
  3557.  
  3558.  
  3559. _________________________________________________________________
  3560.                Release 3.0
  3561.  
  3562.                             page -53-
  3563.  
  3564.  
  3565.  
  3566. b i r d s o n g
  3567.                      WFS User Guide and Reference
  3568.  
  3569.                             Reference
  3570. _________________________________________________________________
  3571.  
  3572.  
  3573.  
  3574. when mail arrives for "WFS-Info-Request" at your site, first add
  3575. a statement to the ALIASES file as:
  3576.  
  3577.      WFS-Info-Request | WFSREQST
  3578.  
  3579. Then add a statement to the STATIC file as:
  3580.  
  3581.      wfs.automail : WFS-Info-Request e:\user\sendfile\wfsinfo.txt
  3582.  
  3583. The file "ALIASES.SMP", provided in the WFS package as a sample
  3584. ALIASES file, shows techniques for specifying aliases. See also:
  3585. "Extended Logging" on page 57; this topic describes some other
  3586. techniques for using aliases.
  3587.  
  3588. Requests received via this technique are queued for processing by
  3589. WFSSENDF.
  3590.  
  3591. 6.1.25    wfs.automail.immediate
  3592.  
  3593. The "wfs.automail.immediate" STATIC file statement is similar to
  3594. the wfs.automail statement.
  3595.  
  3596. It differs in that the response (the requested file) is sent
  3597. immediately to the requestor.
  3598.  
  3599. Note that the rate limiting controls do not apply for mail
  3600. addressed to the address specified via the wfs.automail.immediate
  3601. statement.
  3602.  
  3603. 6.1.26    wfs.command
  3604.  
  3605. The "wfs.command" STATIC file statement may be used by the SysOp
  3606. to create commands unique to that site. When the command is
  3607. detected in an input message, An associated command definition
  3608. file is used to control the execution of the command.
  3609.  
  3610. The operand of the wfs.command statement identifies first the
  3611. command name, second the associated command definition file. The
  3612. syntax for the wfs.command STATIC file statement is:
  3613.  
  3614.      wfs.command : <commandname> <filename>
  3615.  
  3616. Commandname may be any string without embedded blanks, tabs or
  3617. newlines.
  3618.  
  3619. Filename should be filename only: no file extension, no path
  3620. specification. An file extension of .CDF is implied. For example:
  3621.  
  3622.  
  3623.  
  3624.  
  3625. _________________________________________________________________
  3626.                Release 3.0
  3627.  
  3628.                             page -54-
  3629.  
  3630.  
  3631.  
  3632. b i r d s o n g
  3633.                      WFS User Guide and Reference
  3634.  
  3635.                             Reference
  3636. _________________________________________________________________
  3637.  
  3638.  
  3639.  
  3640.      wfs.command : Do_What_I_Mean_Now  dowhim
  3641.  
  3642. When the string "Do_What_I_Mean_Now" appears as the first token
  3643. on a line in the body of an incomming message, WFS will attempt
  3644. to execute the program or batch file defined in in the file
  3645. "dowhim.cdf" in the user directory defined for wfs.sender.
  3646.  
  3647. You may define as many wfs.command statements in your STATIC file
  3648. as available memory permits; each statement uses 16 bytes plus
  3649. the length of each operand. The file referenced is not
  3650. internalized until the named command is detected in an incomming
  3651. message.
  3652.  
  3653. For the fomat of the Command Execution Facility files and a
  3654. discussion of its use, see: "Remote Command Execution Facility"
  3655. on page 29.
  3656.  
  3657. 6.1.27    wfs.maillist
  3658.  
  3659. The wfs.maillist STATIC file statement specifies a binding of a
  3660. user ID, aliased in Waffles ALIASES file to the WFSREQST program,
  3661. and a Mail List configuration. The syntax for the wfs.maillist
  3662. statement is:
  3663.  
  3664.      wfs.maillist : <listname> <directory>
  3665.  
  3666. Where:
  3667.  
  3668. <listname>  Is the name specified in Waffle's ALIASES file for
  3669.         the Mailing List.
  3670.  
  3671. <directory> Is the name of a directory, under Waffle's USER
  3672.         directory, containing the Mailing List's
  3673.         configuration files.
  3674.  
  3675. For example, to define a mailing list named "test-list", Three
  3676. steps are required.
  3677.  
  3678. 1.  Define the wfs.maillist statement in Waffle's STATIC file as:
  3679.  
  3680.      wfs.maillist : test-list  testlist
  3681.  
  3682.     Alias the Mailing List's name to the WFSREQST program; place
  3683.     a statement in Waffle's ALIASES file like:
  3684.  
  3685.      test-list     | wfsreqst
  3686.  
  3687.  
  3688.  
  3689.  
  3690.  
  3691. _________________________________________________________________
  3692.                Release 3.0
  3693.  
  3694.                             page -55-
  3695.  
  3696.  
  3697.  
  3698. b i r d s o n g
  3699.                      WFS User Guide and Reference
  3700.  
  3701.                             Reference
  3702. _________________________________________________________________
  3703.  
  3704.  
  3705.  
  3706.     Create a directory in Waffle's USER directory tree named
  3707.     "testlist".
  3708.  
  3709.     In this directory you will need to create a file,
  3710.     "maillist.cfg". The syntax for statements in this file are
  3711.     described in "Mailing Lists" on page 33.
  3712.  
  3713. You may have as many "wfs.maillist" statements as available
  3714. memory will support.
  3715.  
  3716.  
  3717.  
  3718.  
  3719.  
  3720.  
  3721.  
  3722.  
  3723.  
  3724.  
  3725.  
  3726.  
  3727.  
  3728.  
  3729.  
  3730.  
  3731.  
  3732.  
  3733.  
  3734.  
  3735.  
  3736.  
  3737.  
  3738.  
  3739.  
  3740.  
  3741.  
  3742.  
  3743.  
  3744.  
  3745.  
  3746.  
  3747.  
  3748.  
  3749.  
  3750.  
  3751.  
  3752.  
  3753.  
  3754.  
  3755.  
  3756.  
  3757. _________________________________________________________________
  3758.                Release 3.0
  3759.  
  3760.                             page -56-
  3761.  
  3762.  
  3763.  
  3764. b i r d s o n g
  3765.                      WFS User Guide and Reference
  3766.  
  3767.                               A Few Hints
  3768. _________________________________________________________________
  3769.  
  3770.  
  3771.  
  3772.  
  3773.  
  3774.  
  3775.                 Chapter 7
  3776.  
  3777.                A Few Hints
  3778.  
  3779.  
  3780. This chapter focuses on a few hints to extend the capabilities
  3781. for WFS.
  3782.  
  3783.  
  3784. 7.1  Extended Logging
  3785.  
  3786. The WFSLOG file in Waffle's ADMIN directory contains a history of
  3787. every transaction handled by the WFS programs. The records in
  3788. WFSLOG are terse by design. Should you have a requirement to log
  3789. ABSOLUTELY EVERYTHING. Then the following method is offered.
  3790.  
  3791. 1.  Create a local newsgroup with an access level higher than can
  3792.     be seen by normal users; you may also use group access to
  3793.     restrict access to WFS administrators only. For example,
  3794.     create the local newsgroup "WFSHistory"
  3795.  
  3796. 2.  In the system alias file create an entry that is the target
  3797.     for incomming mail addressed to WFS. Alias this ID to two
  3798.     target IDs; like so:
  3799.  
  3800.      archive-server  WFS$Post WFS$SERVER
  3801.  
  3802.      WFS$Post     | post WFSHistory
  3803.      WFS$SERVER     | WFSREQST
  3804.  
  3805. Now all mail addressed to the ID "archive-server" will be posted
  3806. to the WFSHistory newsgroup, and will be read by the WFSREQST
  3807. program.
  3808.  
  3809.  
  3810. 7.2  Testing WFS
  3811.  
  3812. When bringing up WFS for the first time, you will have to test
  3813. it. Since the program WFSREQST reads from stdin, you can
  3814. construct a mail message and feed it to WFSREQST from the MS-DOS
  3815. command line by re-directing the test message to stdin. For
  3816. example, create the file "testmsg". The minimum statements
  3817. required for a test message are:
  3818.  
  3819.  
  3820.  
  3821.  
  3822.  
  3823. _________________________________________________________________
  3824.                Release 3.0
  3825.  
  3826.                             page -57-
  3827.  
  3828.  
  3829.  
  3830. b i r d s o n g
  3831.                      WFS User Guide and Reference
  3832.  
  3833.                               A Few Hints
  3834. _________________________________________________________________
  3835.  
  3836.  
  3837.  
  3838.      From: user@site
  3839.      To: server@right.here
  3840.  
  3841.      <some wfs command>
  3842.  
  3843. To feed this test message to WFSREQST from the MS-DOS command
  3844. line, Establish Waffle's environment (set the WAFFLE environment
  3845. variable and include Waffle's bin directory in the PATH) and
  3846. issue the command:
  3847.  
  3848.      WFSREQST <testmsg
  3849.  
  3850. To evaluate the output, look in the spool directory, in the sub-
  3851. directory for the site that would act as smarthost for the reply
  3852. address to the mail. The response to the request should be there.
  3853. If no mail is sent, check the WFSLOG file in the ADMIN directory.
  3854. There should be some messages indicating the source of the error.
  3855.  
  3856.  
  3857. 7.3  Forging a Request
  3858.  
  3859. It happens to me all the time. Someone says, "How do I get file
  3860. QRZ.ZIP?"
  3861.  
  3862. Well, I know I have it. Instead of saying, "Send a request to my
  3863. archive-server,... blah blah blah."
  3864.  
  3865. I say, "I'll send it to you via email, uuencoded."
  3866.  
  3867. What I do is forge a piece of mail containing the request and
  3868. manually feed it to WFSREQST. Instead of editing a forged message
  3869. manually, I have a small batch file that does it all. The
  3870. following example contains its own documentation and should be
  3871. obvious. Use it as an example:
  3872.  
  3873.  
  3874.  
  3875.  
  3876.  
  3877.  
  3878.  
  3879.  
  3880.  
  3881.  
  3882.  
  3883.  
  3884.  
  3885.  
  3886.  
  3887.  
  3888.  
  3889. _________________________________________________________________
  3890.                Release 3.0
  3891.  
  3892.                             page -58-
  3893.  
  3894.  
  3895.  
  3896. b i r d s o n g
  3897.                      WFS User Guide and Reference
  3898.  
  3899.                               A Few Hints
  3900. _________________________________________________________________
  3901.  
  3902.  
  3903.  
  3904.      @echo on
  3905.      :
  3906.      : forge mail for wfs
  3907.      :
  3908.      : syntax: wfsforge <user> <file> [uue | xxe]
  3909.      :
  3910.      : --- validate input ---
  3911.      if "%1" == "" goto syntax
  3912.      if "%2" == "" goto syntax
  3913.      :
  3914.      : --- create forged message ---
  3915.      :
  3916.      echo From: %1 >f:\waffle\wfsforge.msg
  3917.      echo To: archive-server@foo.bar.com >>f:\waffle\wfsforge.msg
  3918.      echo Subject: The file you asked me for >>f:\waffle\wfsforge.msg
  3919.      type c:\etc\blankln >>f:\waffle\wfsforge.msg
  3920.      echo /get %2 %3 >>f:\waffle\wfsforge.msg
  3921.      echo -- >>f:\waffle\wfsforge.msg
  3922.      :
  3923.      : --- mail it ---
  3924.      :
  3925.      wfsreqst <wfsforge.msg
  3926.      goto done
  3927.      :
  3928.      : syntax error
  3929.      :
  3930.      :syntax
  3931.      echo syntax error:
  3932.      echo usage is: wfsforge user file [uue | xxe]
  3933.      :done
  3934.  
  3935. Note: the file "c:\etc\blankln" contains a blank line.
  3936.  
  3937.  
  3938.  
  3939.  
  3940.  
  3941.  
  3942.  
  3943.  
  3944.  
  3945.  
  3946.  
  3947.  
  3948.  
  3949.  
  3950.  
  3951.  
  3952.  
  3953.  
  3954.  
  3955. _________________________________________________________________
  3956.                Release 3.0
  3957.  
  3958.                             page -59-
  3959.  
  3960.  
  3961.  
  3962. b i r d s o n g
  3963.                      WFS User Guide and Reference
  3964.  
  3965.                              Messages
  3966. _________________________________________________________________
  3967.  
  3968.  
  3969.  
  3970.  
  3971.  
  3972.  
  3973.                 Chapter 8
  3974.  
  3975.                 Messages
  3976.  
  3977.  
  3978. WFS records his activity in the WFSLOG file in Waffle's ADMIN
  3979. directory. These messages represent normal activity, errors and
  3980. exceptions noted while doing his job.
  3981.  
  3982. Messages begin with a "seriousness" indication.
  3983.  
  3984. o   Panic: alerts the system operator of a condition that has
  3985.     caused a WFS program to abnormally terminate. This is bad
  3986.     news. The current operation (mail message or queue file) may
  3987.     have been lost or data corrupted. This needs immediate
  3988.     attention.
  3989.  
  3990. o   Error: alerts the system operator of some condition that
  3991.     needs immediate attention.
  3992.  
  3993. o   Warning: alerts the system operator of some condition that
  3994.     may warrant attention.
  3995.  
  3996. o   Info: is an information message.
  3997.  
  3998. o   debug: are debug messages. These messages will appear only
  3999.     when debug options are specified.
  4000.  
  4001.  
  4002.  
  4003.  
  4004.  
  4005.  
  4006.  
  4007.  
  4008.  
  4009.  
  4010.  
  4011.  
  4012.  
  4013.  
  4014.  
  4015.  
  4016.  
  4017.  
  4018.  
  4019.  
  4020.  
  4021. _________________________________________________________________
  4022.                Release 3.0
  4023.  
  4024.                             page -60-
  4025.  
  4026.  
  4027.  
  4028.  
  4029. b i r d s o n g
  4030.                      WFS User Guide and Reference
  4031.  
  4032. _________________________________________________________________
  4033.  
  4034.  
  4035.  
  4036.  
  4037.  
  4038.  
  4039.                Appendix A
  4040.  
  4041.  
  4042. A.1  Technical Support
  4043.  
  4044. Technical support is available via electronic mail and US mail.
  4045. Your comments and suggestions are very welcome.
  4046.  
  4047. Via US Mail, write to:
  4048.  
  4049.      WFS Tech Support
  4050.      The Birdsong Company
  4051.      PO Box 2031
  4052.      Sunnyvale, CA 94087-2031
  4053.  
  4054. Via email, write to:
  4055.  
  4056.      tech-support@Birdsong.Suvl.CA.US
  4057.  
  4058.  
  4059. A.2  Known Problems
  4060.  
  4061. A list of known bugs in this and some previous releases of WFS
  4062. can be retrieved by sending email to:
  4063.  
  4064.      WFS-buglist@Birdsong.Suvl.CA.US
  4065.  
  4066.  
  4067. A.3  Future Direction
  4068.  
  4069. Nothing Planned.
  4070.  
  4071. Gimme a hint!
  4072.  
  4073.  
  4074.  
  4075.  
  4076.  
  4077.  
  4078.  
  4079.  
  4080.  
  4081.  
  4082.  
  4083.  
  4084.  
  4085.  
  4086.  
  4087. _________________________________________________________________
  4088.                Release 3.0
  4089.  
  4090.                             page -61-
  4091.  
  4092.  
  4093.  
  4094.  
  4095. b i r d s o n g
  4096.                      WFS User Guide and Reference
  4097.  
  4098. _________________________________________________________________
  4099.  
  4100.  
  4101.  
  4102. A.4  Acknowledgments
  4103.  
  4104. Waffle BBS is a product by Thomas E. Dell and Darkside
  4105. International.
  4106.  
  4107. Contact:
  4108.  
  4109.      Thomas E. Dell
  4110.      Darkside International
  4111.      PO Box 4436
  4112.      Mountain View, CA 94949-0436
  4113.  
  4114.      via email:  dell@vox.darkside.com
  4115.  
  4116. UUencode, is a product by Richard E. Marks.
  4117.  
  4118. Contact:
  4119.  
  4120.      Richard Marks
  4121.      931 Sulgrave Lane
  4122.      Bryn Mawr, PA 19010
  4123.  
  4124.  
  4125.  
  4126.  
  4127.  
  4128.  
  4129.  
  4130.  
  4131.  
  4132.  
  4133.  
  4134.  
  4135.  
  4136.  
  4137.  
  4138.  
  4139.  
  4140.  
  4141.  
  4142.  
  4143.  
  4144.  
  4145.  
  4146.  
  4147.  
  4148.  
  4149.  
  4150.  
  4151.  
  4152.  
  4153. _________________________________________________________________
  4154.                Release 3.0
  4155.  
  4156.                             page -62-
  4157.  
  4158.  
  4159.  
  4160.  
  4161. b i r d s o n g
  4162.                      WFS User Guide and Reference
  4163.  
  4164. _________________________________________________________________
  4165.  
  4166.  
  4167.  
  4168.  
  4169.  
  4170.  
  4171.  
  4172.  
  4173.  
  4174.  
  4175.  
  4176.  
  4177.  
  4178.  
  4179.  
  4180.  
  4181.  
  4182.  
  4183.  
  4184.  
  4185.  
  4186.  
  4187.  
  4188.  
  4189.  
  4190.              This is the last page.
  4191.  
  4192.          This page is intentionally left blank.
  4193.  
  4194.  
  4195.  
  4196.  
  4197.  
  4198.  
  4199.  
  4200.  
  4201.  
  4202.  
  4203.  
  4204.  
  4205.  
  4206.  
  4207.  
  4208.  
  4209.  
  4210.  
  4211.  
  4212.  
  4213.  
  4214.  
  4215.  
  4216.  
  4217.  
  4218.  
  4219. _________________________________________________________________
  4220.                Release 3.0
  4221.  
  4222.                             page -63-
  4223.  
  4224.  
  4225.